Passed
Push — main ( 57c3b2...931586 )
by Acho
01:25
created

flutterwave.*billsService.Validate   A

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 4
dl 0
loc 22
rs 9.7
c 0
b 0
f 0
1
package flutterwave
2
3
import (
4
	"context"
5
	"encoding/json"
6
	"net/http"
7
)
8
9
// billsService is the API client for the `/gateway` endpoint
10
type billsService service
11
12
// CreatePayment creates bill payments.
13
//
14
// API Docs: https://developer.flutterwave.com/reference/create-a-bill-payment
15
func (service *billsService) CreatePayment(ctx context.Context, payload *BillsCreatePaymentRequest) (*BillsCreatePaymentResponse, *Response, error) {
16
	request, err := service.client.newRequest(ctx, http.MethodPost, "/v3/bills", payload)
17
	if err != nil {
18
		return nil, nil, err
19
	}
20
21
	response, err := service.client.do(request)
22
	if err != nil {
23
		return nil, response, err
24
	}
25
26
	var data BillsCreatePaymentResponse
27
	if err = json.Unmarshal(*response.Body, &data); err != nil {
28
		return nil, response, err
29
	}
30
31
	return &data, response, nil
32
}
33
34
// Validate validates services like DSTV smartcard number, Meter number etc.
35
//
36
// API Docs: https://developer.flutterwave.com/reference/validate-bill-service
37
func (service *billsService) Validate(ctx context.Context, itemCode string, billerCode string, customer string) (*BillsValidateResponse, *Response, error) {
38
	request, err := service.client.newRequest(ctx, http.MethodGet, "/v3/bill-items/"+itemCode+"/validate", nil)
39
	if err != nil {
40
		return nil, nil, err
41
	}
42
43
	request = service.client.addURLParams(request, map[string]string{
44
		"code":     billerCode,
45
		"customer": customer,
46
	})
47
48
	response, err := service.client.do(request)
49
	if err != nil {
50
		return nil, response, err
51
	}
52
53
	var data BillsValidateResponse
54
	if err = json.Unmarshal(*response.Body, &data); err != nil {
55
		return nil, response, err
56
	}
57
58
	return &data, response, nil
59
}
60