-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmethods_v2.go
151 lines (129 loc) · 4.17 KB
/
methods_v2.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package goxios
import (
"io"
"net/http"
)
type RequestOpts struct {
Headers []Header
Body io.Reader
QueryParams []QueryParam
}
// Post sends a POST request to the specified URL with optional headers, request body, and query parameters.
// It takes a RequestOpts struct containing headers, body, and query parameters, and returns the HTTP response received or an error if any.
func (c *clientV2) Post(url string, options *RequestOpts) (*http.Response, error) {
headers := options.Headers
body := options.Body
queryParams := options.QueryParams
// Append query parameters to the URL
url = setQueryParams(queryParams, url)
// Create a new POST request
req, err := newRequest(c.ctx, http.MethodPost, url, body)
if err != nil {
return nil, err
}
c.req = req
// Set request headers
setHeaders(c.req, c.headers)
setHeaders(c.req, headers)
// Get the HTTP response
res, err := c.Response()
if err != nil {
return nil, err
}
return res, nil
}
// Get sends a GET request to the specified URL with optional headers and query parameters.
// It takes a RequestOpts struct containing headers and query parameters, and returns the HTTP response received or an error if any.
func (c *clientV2) Get(url string, options *RequestOpts) (*http.Response, error) {
headers := options.Headers
queryParams := options.QueryParams
// Append query parameters to the URL
url = setQueryParams(queryParams, url)
// Create a new GET request
req, err := newRequest(c.ctx, http.MethodGet, url, nil)
if err != nil {
return nil, err
}
c.req = req
// Set request headers
setHeaders(c.req, c.headers)
setHeaders(c.req, headers)
// Get the HTTP response
res, err := c.Response()
if err != nil {
return nil, err
}
return res, nil
}
// Put sends a PUT request to the specified URL with optional headers, request body, and query parameters.
// It takes a RequestOpts struct containing headers, body, and query parameters, and returns the HTTP response received or an error if any.
func (c *clientV2) Put(url string, options *RequestOpts) (*http.Response, error) {
headers := options.Headers
body := options.Body
queryParams := options.QueryParams
// Append query parameters to the URL
url = setQueryParams(queryParams, url)
// Create a new PUT request
req, err := newRequest(c.ctx, http.MethodPut, url, body)
if err != nil {
return nil, err
}
c.req = req
// Set request headers
setHeaders(c.req, c.headers)
setHeaders(c.req, headers)
// Get the HTTP response
res, err := c.Response()
if err != nil {
return nil, err
}
return res, nil
}
// Patch sends a PATCH request to the specified URL with optional headers, request body, and query parameters.
// It takes a RequestOpts struct containing headers, body, and query parameters, and returns the HTTP response received or an error if any.
func (c *clientV2) Patch(url string, options *RequestOpts) (*http.Response, error) {
headers := options.Headers
body := options.Body
queryParams := options.QueryParams
// Append query parameters to the URL
url = setQueryParams(queryParams, url)
// Create a new PATCH request
req, err := newRequest(c.ctx, http.MethodPatch, url, body)
if err != nil {
return nil, err
}
c.req = req
// Set request headers
setHeaders(c.req, c.headers)
setHeaders(c.req, headers)
// Get the HTTP response
res, err := c.Response()
if err != nil {
return nil, err
}
return res, nil
}
// Delete sends a DELETE request to the specified URL with optional headers, request body, and query parameters.
// It takes a RequestOpts struct containing headers, body, and query parameters, and returns the HTTP response received or an error if any.
func (c *clientV2) Delete(url string, options *RequestOpts) (*http.Response, error) {
headers := options.Headers
body := options.Body
queryParams := options.QueryParams
// Append query parameters to the URL
url = setQueryParams(queryParams, url)
// Create a new DELETE request
req, err := newRequest(c.ctx, http.MethodDelete, url, body)
if err != nil {
return nil, err
}
c.req = req
// Set request headers
setHeaders(c.req, c.headers)
setHeaders(c.req, headers)
// Get the HTTP response
res, err := c.Response()
if err != nil {
return nil, err
}
return res, nil
}