GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 6edde8...76d75a )
by Victor Hugo
01:47
created

mollie.*ShipmentsService.Update   A

Complexity

Conditions 4

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 4

Importance

Changes 0
Metric Value
cc 4
eloc 11
dl 0
loc 16
c 0
b 0
f 0
ccs 10
cts 10
cp 1
crap 4
rs 9.85
nop 3
1
package mollie
2
3
import (
4
	"encoding/json"
5
	"fmt"
6
	"net/http"
7
	"time"
8
)
9
10
// ShipmentsService operates on shipments endpoints.
11
type ShipmentsService service
12
13
// Shipment contains information about a user service/product delivery and
14
// is used in the figurative sense here.
15
// It can also mean that a service was provided or digital content was delivered.
16
type Shipment struct {
17
	Resource  string           `json:"resource,omitempty"`
18
	ID        string           `json:"id,omitempty"`
19
	OrderID   string           `json:"orderId,omitempty"`
20
	CreatedAt *time.Time       `json:"createdAt,omitempty"`
21
	Tracking  ShipmentTracking `json:"tracking,omitempty"`
22
	Lines     []OrderLines     `json:"lines,omitempty"`
23
	Links     ShipmentLinks    `json:"_links,omitempty"`
24
}
25
26
// ShipmentTracking contains shipment tracking details.
27
type ShipmentTracking struct {
28
	Carrier string `json:"carrier,omitempty"`
29
	Code    string `json:"code,omitempty"`
30
	URL     string `json:"url,omitempty"`
31
}
32
33
// ShipmentLinks contains URL objects with shipment relevant
34
// information for the user.
35
type ShipmentLinks struct {
36
	Self          URL `json:"self,omitempty"`
37
	Order         URL `json:"order,omitempty"`
38
	Documentation URL `json:"documentation,omitempty"`
39
}
40
41
// Get retrieves a single shipment and the order lines shipped by a shipment’s ID.
42
//
43
// See: https://docs.mollie.com/reference/v2/shipments-api/get-shipment#
44
func (ss *ShipmentsService) Get(oID string, sID string) (s *Shipment, err error) {
45 1
	u := fmt.Sprintf("v2/orders/%s/shipments/%s", oID, sID)
46 1
	req, err := ss.client.NewAPIRequest(http.MethodGet, u, nil)
47 1
	if err != nil {
48 1
		return
49
	}
50
51 1
	res, err := ss.client.Do(req)
52 1
	if err != nil {
53 1
		return
54
	}
55
56 1
	if err = json.Unmarshal(res.content, &s); err != nil {
57 1
		return
58
	}
59 1
	return
60
}
61
62
// CreateShipmentRequest defines information required to create a new shipment
63
type CreateShipmentRequest struct {
64
	Lines    []OrderLines     `json:"lines,omitempty"`
65
	Tracking ShipmentTracking `json:"tracking,omitempty"`
66
}
67
68
// Create can be used to ship order lines.
69
//
70
// See: https://docs.mollie.com/reference/v2/shipments-api/create-shipment
71
func (ss *ShipmentsService) Create(oID string, cs CreateShipmentRequest) (s *Shipment, err error) {
72 1
	u := fmt.Sprintf("v2/orders/%s/shipments", oID)
73 1
	req, err := ss.client.NewAPIRequest(http.MethodPost, u, cs)
74 1
	if err != nil {
75 1
		return
76
	}
77
78 1
	res, err := ss.client.Do(req)
79 1
	if err != nil {
80 1
		return
81
	}
82
83 1
	if err = json.Unmarshal(res.content, &s); err != nil {
84 1
		return
85
	}
86 1
	return
87
}
88
89
// ShipmentsList describes how a list of payments will be retrieved by Mollie.
90
type ShipmentsList struct {
91
	Count    int `json:"count,omitempty"`
92
	Embedded struct {
93
		Shipments []Shipment
94
	} `json:"_embedded,omitempty"`
95
	Links PaginationLinks `json:"_links,omitempty"`
96
}
97
98
// List retrieves all shipments for an order.
99
//
100
// See: https://docs.mollie.com/reference/v2/shipments-api/list-shipments
101
func (ss *ShipmentsService) List(oID string) (sl *ShipmentsList, err error) {
102 1
	u := fmt.Sprintf("v2/orders/%s/shipments", oID)
103 1
	req, err := ss.client.NewAPIRequest(http.MethodGet, u, nil)
104 1
	if err != nil {
105 1
		return
106
	}
107
108 1
	res, err := ss.client.Do(req)
109 1
	if err != nil {
110 1
		return
111
	}
112
113 1
	if err = json.Unmarshal(res.content, &sl); err != nil {
114 1
		return
115
	}
116 1
	return
117
}
118
119
// Update can be used to update the tracking information of a shipment
120
//
121
// See: https://docs.mollie.com/reference/v2/shipments-api/update-shipment
122
func (ss *ShipmentsService) Update(oID string, sID string, st ShipmentTracking) (s *Shipment, err error) {
123 1
	u := fmt.Sprintf("v2/orders/%s/shipments/%s", oID, sID)
124 1
	req, err := ss.client.NewAPIRequest(http.MethodPatch, u, st)
125 1
	if err != nil {
126 1
		return
127
	}
128
129 1
	res, err := ss.client.Do(req)
130 1
	if err != nil {
131 1
		return
132
	}
133
134 1
	if err = json.Unmarshal(res.content, &s); err != nil {
135 1
		return
136
	}
137 1
	return
138
}
139