neero.*paymentMethodService.Create   A
last analyzed

Complexity

Conditions 4

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 14
nop 2
dl 0
loc 22
rs 9.7
c 0
b 0
f 0
1
package neero
2
3
import (
4
	"context"
5
	"encoding/json"
6
	"net/http"
7
)
8
9
// paymentMethodService is the API client for the `/payment-methods` endpoint
10
type paymentMethodService service
11
12
// Create a Payment Method in the system.
13
//
14
// API Docs: https://app.theneo.io/neero/neero-payment-gateway/payment-methods/create-payment-method
15
func (service *paymentMethodService) Create(ctx context.Context, createRequest CreatePaymentMethodRequest) (*CreatePaymentMethodResponse, *Response, error) {
16
	payload := map[string]any{
17
		"type":                            createRequest.Type(),
18
		string(createRequest.Attribute()): createRequest,
19
	}
20
21
	request, err := service.client.newRequest(ctx, http.MethodPost, "/payment-gateway/api/v1/payment-methods", payload)
22
	if err != nil {
23
		return nil, nil, err
24
	}
25
26
	response, err := service.client.do(request)
27
	if err != nil {
28
		return nil, response, err
29
	}
30
31
	paymentMethod := new(CreatePaymentMethodResponse)
32
	if err = json.Unmarshal(*response.Body, paymentMethod); err != nil {
33
		return nil, response, err
34
	}
35
36
	return paymentMethod, response, nil
37
}
38
39
// ResolveDetails returns the details of Payment Method from Provider
40
//
41
// API Docs: https://app.theneo.io/neero/neero-payment-gateway/payment-methods/resolve-payment-method-details-1
42
func (service *paymentMethodService) ResolveDetails(ctx context.Context, createRequest CreatePaymentMethodRequest) (*ResolvePaymentMethodDetailsResponse, *Response, error) {
43
	payload := map[string]any{
44
		"type":                            createRequest.Type(),
45
		string(createRequest.Attribute()): createRequest,
46
	}
47
48
	request, err := service.client.newRequest(ctx, http.MethodPost, "/payment-gateway/api/v1/payment-methods/resolve-details", payload)
49
	if err != nil {
50
		return nil, nil, err
51
	}
52
53
	response, err := service.client.do(request)
54
	if err != nil {
55
		return nil, response, err
56
	}
57
58
	details := new(ResolvePaymentMethodDetailsResponse)
59
	if err = json.Unmarshal(*response.Body, details); err != nil {
60
		return nil, response, err
61
	}
62
63
	return details, response, nil
64
}
65