payment_service.go   A
last analyzed

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 35
dl 0
loc 62
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A coinpayments.*paymentService.CreateTransaction 0 22 4
A coinpayments.*paymentService.GetTransaction 0 20 4
1
package coinpayments
2
3
import (
4
	"context"
5
	"encoding/json"
6
	"net/http"
7
	"net/url"
8
)
9
10
// paymentService is the API client Payments on coinpayments.net
11
type paymentService service
12
13
// CreateTransaction creates a payment on coinpayments
14
//
15
// API Docs: https://www.coinpayments.net/apidoc-create-transaction
16
func (service *paymentService) CreateTransaction(ctx context.Context, params *CreatePaymentRequest) (*CreatePaymentResponse, *Response, error) {
17
	payload := url.Values{}
18
	payload.Add("amount", params.Amount)
19
	payload.Add("currency1", params.OriginalCurrency)
20
	payload.Add("currency2", params.SendingCurrency)
21
22
	request, err := service.client.newRequest(ctx, http.MethodPost, "create_transaction", payload)
23
	if err != nil {
24
		return nil, nil, err
25
	}
26
27
	response, err := service.client.do(request)
28
	if err != nil {
29
		return nil, response, err
30
	}
31
32
	createPaymentResponse := new(CreatePaymentResponse)
33
	if err = json.Unmarshal(*response.Body, createPaymentResponse); err != nil {
34
		return nil, response, err
35
	}
36
37
	return createPaymentResponse, response, nil
38
}
39
40
// GetTransaction fetches information on a transaction
41
//
42
// API Docs: https://www.coinpayments.net/apidoc-get-tx-info
43
func (service *paymentService) GetTransaction(ctx context.Context, transactionID string) (*map[string]interface{}, *Response, error) {
44
	payload := url.Values{}
45
	payload.Add("txid", transactionID)
46
47
	request, err := service.client.newRequest(ctx, http.MethodPost, "get_tx_info", payload)
48
	if err != nil {
49
		return nil, nil, err
50
	}
51
52
	response, err := service.client.do(request)
53
	if err != nil {
54
		return nil, response, err
55
	}
56
57
	createPaymentResponse := new(map[string]interface{})
58
	if err = json.Unmarshal(*response.Body, createPaymentResponse); err != nil {
59
		return nil, response, err
60
	}
61
62
	return createPaymentResponse, response, nil
63
}
64