github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/merchant/riskassessments/Client.go (about)

     1  // This class was auto-generated from the API references found at
     2  // https://epayments-api.developer-ingenico.com/
     3  
     4  package riskassessments
     5  
     6  import (
     7  	"github.com/Ingenico-ePayments/connect-sdk-go/communicator/communication"
     8  	"github.com/Ingenico-ePayments/connect-sdk-go/domain/errors"
     9  	"github.com/Ingenico-ePayments/connect-sdk-go/domain/riskassessments"
    10  	sdkErrors "github.com/Ingenico-ePayments/connect-sdk-go/errors"
    11  	"github.com/Ingenico-ePayments/connect-sdk-go/internal/apiresource"
    12  )
    13  
    14  // Client represents a riskassessments client. Thread-safe.
    15  type Client struct {
    16  	apiResource *apiresource.APIResource
    17  }
    18  
    19  // Bankaccounts represents the resource /{merchantId}/riskassessments/bankaccounts - Risk-assess bankaccount
    20  // Documentation can be found at https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/go/riskassessments/bankaccounts.html
    21  //
    22  // Can return any of the following errors:
    23  // * ValidationError if the request was not correct and couldn't be processed (HTTP status code 400)
    24  // * AuthorizationError if the request was not allowed (HTTP status code 403)
    25  // * IdempotenceError if an idempotent request caused a conflict (HTTP status code 409)
    26  // * ReferenceError if an object was attempted to be referenced that doesn't exist or has been removed,
    27  // or there was a conflict (HTTP status code 404, 409 or 410)
    28  // * GlobalCollectError if something went wrong at the Ingenico ePayments platform,
    29  // the Ingenico ePayments platform was unable to process a message from a downstream partner/acquirer,
    30  // or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
    31  // * APIError if the Ingenico ePayments platform returned any other error
    32  func (c *Client) Bankaccounts(body riskassessments.RiskAssessmentBankAccount, context communication.CallContext) (riskassessments.RiskAssessmentResponse, error) {
    33  	var resultObject riskassessments.RiskAssessmentResponse
    34  
    35  	uri, err := c.apiResource.InstantiateURIWithContext("/v1/{merchantId}/riskassessments/bankaccounts", nil)
    36  	if err != nil {
    37  		return resultObject, err
    38  	}
    39  
    40  	clientHeaders := c.apiResource.ClientHeaders()
    41  
    42  	postErr := c.apiResource.Communicator().Post(uri, clientHeaders, nil, body, context, &resultObject)
    43  	if postErr != nil {
    44  		responseError, isResponseError := postErr.(*sdkErrors.ResponseError)
    45  		if isResponseError {
    46  			var errorObject interface{}
    47  
    48  			errorObject = &errors.ErrorResponse{}
    49  			err = c.apiResource.Communicator().Marshaller().Unmarshal(responseError.Body(), errorObject)
    50  			if err != nil {
    51  				return resultObject, err
    52  			}
    53  
    54  			err, createErr := sdkErrors.CreateAPIError(responseError.StatusCode(), responseError.Body(), errorObject, context)
    55  			if createErr != nil {
    56  				return resultObject, createErr
    57  			}
    58  
    59  			return resultObject, err
    60  		}
    61  
    62  		return resultObject, postErr
    63  	}
    64  
    65  	return resultObject, nil
    66  }
    67  
    68  // Cards represents the resource /{merchantId}/riskassessments/cards - Risk-assess card
    69  // Documentation can be found at https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/go/riskassessments/cards.html
    70  //
    71  // Can return any of the following errors:
    72  // * ValidationError if the request was not correct and couldn't be processed (HTTP status code 400)
    73  // * AuthorizationError if the request was not allowed (HTTP status code 403)
    74  // * IdempotenceError if an idempotent request caused a conflict (HTTP status code 409)
    75  // * ReferenceError if an object was attempted to be referenced that doesn't exist or has been removed,
    76  // or there was a conflict (HTTP status code 404, 409 or 410)
    77  // * GlobalCollectError if something went wrong at the Ingenico ePayments platform,
    78  // the Ingenico ePayments platform was unable to process a message from a downstream partner/acquirer,
    79  // or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
    80  // * APIError if the Ingenico ePayments platform returned any other error
    81  func (c *Client) Cards(body riskassessments.RiskAssessmentCard, context communication.CallContext) (riskassessments.RiskAssessmentResponse, error) {
    82  	var resultObject riskassessments.RiskAssessmentResponse
    83  
    84  	uri, err := c.apiResource.InstantiateURIWithContext("/v1/{merchantId}/riskassessments/cards", nil)
    85  	if err != nil {
    86  		return resultObject, err
    87  	}
    88  
    89  	clientHeaders := c.apiResource.ClientHeaders()
    90  
    91  	postErr := c.apiResource.Communicator().Post(uri, clientHeaders, nil, body, context, &resultObject)
    92  	if postErr != nil {
    93  		responseError, isResponseError := postErr.(*sdkErrors.ResponseError)
    94  		if isResponseError {
    95  			var errorObject interface{}
    96  
    97  			errorObject = &errors.ErrorResponse{}
    98  			err = c.apiResource.Communicator().Marshaller().Unmarshal(responseError.Body(), errorObject)
    99  			if err != nil {
   100  				return resultObject, err
   101  			}
   102  
   103  			err, createErr := sdkErrors.CreateAPIError(responseError.StatusCode(), responseError.Body(), errorObject, context)
   104  			if createErr != nil {
   105  				return resultObject, createErr
   106  			}
   107  
   108  			return resultObject, err
   109  		}
   110  
   111  		return resultObject, postErr
   112  	}
   113  
   114  	return resultObject, nil
   115  }
   116  
   117  // NewClient constructs a Riskassessments Client
   118  //
   119  // parent is the *apiresource.APIResource on top of which we want to build the new Riskassessments Client
   120  func NewClient(parent *apiresource.APIResource, pathContext map[string]string) *Client {
   121  	apiResource := apiresource.NewAPIResourceWithParent(parent, pathContext)
   122  
   123  	return &Client{apiResource}
   124  }