Total Lines | 52 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | package response |
||
2 | |||
3 | import ( |
||
4 | "io" |
||
5 | "io/ioutil" |
||
6 | "net/http" |
||
7 | ) |
||
8 | |||
9 | var hookReadAll = func(fn func(r io.Reader) (b []byte, err error)) func(r io.Reader) (b []byte, err error) { |
||
10 | return fn |
||
11 | } |
||
12 | |||
13 | // CommonResponse is for storing message of httpResponse |
||
14 | type CommonResponse struct { |
||
15 | httpStatus int |
||
16 | httpHeaders map[string][]string |
||
17 | httpContentString string |
||
18 | httpContentBytes []byte |
||
19 | } |
||
20 | |||
21 | // ParseFromHTTPResponse assigns for CommonResponse, returns err when body is too large. |
||
22 | func (resp *CommonResponse) ParseFromHTTPResponse(httpResponse *http.Response) (err error) { |
||
23 | defer httpResponse.Body.Close() |
||
24 | body, err := hookReadAll(ioutil.ReadAll)(httpResponse.Body) |
||
25 | if err != nil { |
||
26 | return |
||
27 | } |
||
28 | resp.httpStatus = httpResponse.StatusCode |
||
29 | resp.httpHeaders = httpResponse.Header |
||
30 | resp.httpContentBytes = body |
||
31 | resp.httpContentString = string(body) |
||
32 | return |
||
33 | } |
||
34 | |||
35 | // GetHTTPStatus returns httpStatus |
||
36 | func (resp *CommonResponse) GetHTTPStatus() int { |
||
37 | return resp.httpStatus |
||
38 | } |
||
39 | |||
40 | // GetHTTPHeaders returns httpresponse's headers |
||
41 | func (resp *CommonResponse) GetHTTPHeaders() map[string][]string { |
||
42 | return resp.httpHeaders |
||
43 | } |
||
44 | |||
45 | // GetHTTPContentString return body content as string |
||
46 | func (resp *CommonResponse) GetHTTPContentString() string { |
||
47 | return resp.httpContentString |
||
48 | } |
||
49 | |||
50 | // GetHTTPContentBytes return body content as []byte |
||
51 | func (resp *CommonResponse) GetHTTPContentBytes() []byte { |
||
52 | return resp.httpContentBytes |
||
53 | } |
||
54 |