zhutik/adyen-api-go

View on GitHub
response.go

Summary

Maintainability
A
0 mins
Test Coverage
package adyen

import (
    "encoding/json"
    "fmt"
    "net/http"
)

// APIError - handle error (non 200 status) response from Adyen
type APIError struct {
    ErrorType string `json:"errorType"`
    ErrorCode string `json:"errorCode"`
    Message   string `json:"message"`
    Status    int32  `json:"status"`
}

// Response - Adyen API response structure
type Response struct {
    *http.Response
    Body []byte
}

// handleHTTPError - handle non 200 response from Adyen and create Error response instance
func (r *Response) handleHTTPError() error {
    var aerr APIError
    if err := json.Unmarshal(r.Body, &aerr); err != nil {
        return err
    }

    if aerr.Status >= http.StatusBadRequest {
        return aerr
    }

    return nil
}

// Error - error interface for ApiError
func (e APIError) Error() string {
    return fmt.Sprintf("[%s][%d]: (%s) %s", e.ErrorType, e.Status, e.ErrorCode, e.Message)
}

// authorize - generate Adyen Authorize API Response
func (r *Response) authorize() (*AuthoriseResponse, error) {
    var a AuthoriseResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// capture - generate Adyen Capture API Response
func (r *Response) capture() (*CaptureResponse, error) {
    var a CaptureResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// cancel - generate Adyen Cancel API Response
func (r *Response) cancel() (*CancelResponse, error) {
    var a CancelResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// cancelOrRefund - generate Adyen CancelOrRefund API Response
func (r *Response) cancelOrRefund() (*CancelOrRefundResponse, error) {
    var a CancelOrRefundResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// refund - generate Adyen Refund API Response
func (r *Response) refund() (*RefundResponse, error) {
    var a RefundResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// adjustAuthorisation - generate Adyen Refund API Response
func (r *Response) adjustAuthorisation() (*AdjustAuthorisationResponse, error) {
    var a AdjustAuthorisationResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// technicalCancel - generate Adyen Technical Cancel API Response
func (r *Response) technicalCancel() (*TechnicalCancelResponse, error) {
    var a TechnicalCancelResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// directoryLookup - generate Adyen Directory Lookup response
func (r *Response) directoryLookup() (*DirectoryLookupResponse, error) {
    var a DirectoryLookupResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// listRecurringDetails  - generate Adyen List Recurring Details response
func (r *Response) listRecurringDetails() (*RecurringDetailsResult, error) {
    var a RecurringDetailsResult
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// disableRecurring  - generate Adyen disable recurring
//
// Link - https://docs.adyen.com/developers/api-reference/recurring-api#disableresult
func (r *Response) disableRecurring() (*RecurringDisableResponse, error) {
    var a RecurringDisableResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}

// paymentMethods - generate Adyen CheckoutAPI paymentMethods response.
func (r *Response) paymentMethods() (*PaymentMethodsResponse, error) {
    var a PaymentMethodsResponse
    if err := json.Unmarshal(r.Body, &a); err != nil {
        return nil, err
    }

    return &a, nil
}