-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibhttp.go
142 lines (111 loc) · 3 KB
/
libhttp.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
package frizzante
import (
"bytes"
"fmt"
"io"
"net/http"
)
var client http.Client
// HttpGet sends an http request using the GET verb.
func HttpGet(path string, header map[string]string) (string, error) {
if nil == header {
header = map[string]string{}
}
request, requestError := http.NewRequest("GET", path, nil)
if requestError != nil {
return "", requestError
}
for key, value := range header {
request.Header.Set(key, value)
}
response, doError := client.Do(request)
if doError != nil {
return "", doError
}
defer response.Body.Close()
bodyBytes, readError := io.ReadAll(response.Body)
if readError != nil {
return "", readError
}
result := string(bodyBytes)
if response.StatusCode >= 300 {
return result, fmt.Errorf("server responded with status code '%d'", response.StatusCode)
}
return result, nil
}
// HttpDelete sends an http request using the DELETE verb.
func HttpDelete(path string, header map[string]string) error {
if nil == header {
header = map[string]string{}
}
request, requestError := http.NewRequest("DELETE", path, nil)
if requestError != nil {
return requestError
}
for key, value := range header {
request.Header.Set(key, value)
}
response, doError := client.Do(request)
if doError != nil {
return doError
}
defer response.Body.Close()
if 200 != response.StatusCode {
return fmt.Errorf("server responded with status code '%d'", response.StatusCode)
}
return nil
}
// HttpPost sends an http request using the POST verb.
func HttpPost(path string, header map[string]string, contents string) (string, error) {
if nil == header {
header = map[string]string{}
}
request, requestError := http.NewRequest("POST", path, bytes.NewBuffer([]byte(contents)))
if requestError != nil {
return "", requestError
}
for key, value := range header {
request.Header.Set(key, value)
}
response, doError := client.Do(request)
if doError != nil {
return "", doError
}
defer response.Body.Close()
if 200 != response.StatusCode {
return "", fmt.Errorf("server responded with status code '%d'", response.StatusCode)
}
bodyBytes, readError := io.ReadAll(response.Body)
if readError != nil {
return "", readError
}
result := string(bodyBytes)
return result, nil
}
// HttpPut sends an http request using the PUT verb.
func HttpPut(path string, header map[string]string, contents string) (string, error) {
if nil == header {
header = map[string]string{}
}
request, requestError := http.NewRequest("PUT", path, bytes.NewBuffer([]byte(contents)))
if requestError != nil {
return "", requestError
}
for key, value := range header {
request.Header.Set(key, value)
}
response, doError := client.Do(request)
if doError != nil {
return "", doError
}
defer response.Body.Close()
if 200 != response.StatusCode {
return "", fmt.Errorf("server responded with status code '%d'", response.StatusCode)
}
bodyBytes, readError := io.ReadAll(response.Body)
if readError != nil {
return "", readError
}
result := string(bodyBytes)
return result, nil
}