response.go raw
1 package http
2
3 import (
4 "fmt"
5 "net/http"
6 )
7
8 // Response provides the HTTP specific response structure for HTTP specific
9 // middleware steps to use to deserialize the response from an operation call.
10 type Response struct {
11 *http.Response
12 }
13
14 // ResponseError provides the HTTP centric error type wrapping the underlying
15 // error with the HTTP response value.
16 type ResponseError struct {
17 Response *Response
18 Err error
19 }
20
21 // HTTPStatusCode returns the HTTP response status code received from the service.
22 func (e *ResponseError) HTTPStatusCode() int { return e.Response.StatusCode }
23
24 // HTTPResponse returns the HTTP response received from the service.
25 func (e *ResponseError) HTTPResponse() *Response { return e.Response }
26
27 // Unwrap returns the nested error if any, or nil.
28 func (e *ResponseError) Unwrap() error { return e.Err }
29
30 func (e *ResponseError) Error() string {
31 return fmt.Sprintf(
32 "http response error StatusCode: %d, %v",
33 e.Response.StatusCode, e.Err)
34 }
35