diff options
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go')
-rw-r--r-- | vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go b/vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go new file mode 100644 index 0000000..0b9b0df --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go | |||
@@ -0,0 +1,57 @@ | |||
1 | package s3err | ||
2 | |||
3 | import ( | ||
4 | "fmt" | ||
5 | |||
6 | "github.com/aws/aws-sdk-go/aws/awserr" | ||
7 | "github.com/aws/aws-sdk-go/aws/request" | ||
8 | ) | ||
9 | |||
10 | // RequestFailure provides additional S3 specific metadata for the request | ||
11 | // failure. | ||
12 | type RequestFailure struct { | ||
13 | awserr.RequestFailure | ||
14 | |||
15 | hostID string | ||
16 | } | ||
17 | |||
18 | // NewRequestFailure returns a request failure error decordated with S3 | ||
19 | // specific metadata. | ||
20 | func NewRequestFailure(err awserr.RequestFailure, hostID string) *RequestFailure { | ||
21 | return &RequestFailure{RequestFailure: err, hostID: hostID} | ||
22 | } | ||
23 | |||
24 | func (r RequestFailure) Error() string { | ||
25 | extra := fmt.Sprintf("status code: %d, request id: %s, host id: %s", | ||
26 | r.StatusCode(), r.RequestID(), r.hostID) | ||
27 | return awserr.SprintError(r.Code(), r.Message(), extra, r.OrigErr()) | ||
28 | } | ||
29 | func (r RequestFailure) String() string { | ||
30 | return r.Error() | ||
31 | } | ||
32 | |||
33 | // HostID returns the HostID request response value. | ||
34 | func (r RequestFailure) HostID() string { | ||
35 | return r.hostID | ||
36 | } | ||
37 | |||
38 | // RequestFailureWrapperHandler returns a handler to rap an | ||
39 | // awserr.RequestFailure with the S3 request ID 2 from the response. | ||
40 | func RequestFailureWrapperHandler() request.NamedHandler { | ||
41 | return request.NamedHandler{ | ||
42 | Name: "awssdk.s3.errorHandler", | ||
43 | Fn: func(req *request.Request) { | ||
44 | reqErr, ok := req.Error.(awserr.RequestFailure) | ||
45 | if !ok || reqErr == nil { | ||
46 | return | ||
47 | } | ||
48 | |||
49 | hostID := req.HTTPResponse.Header.Get("X-Amz-Id-2") | ||
50 | if req.Error == nil { | ||
51 | return | ||
52 | } | ||
53 | |||
54 | req.Error = NewRequestFailure(reqErr, hostID) | ||
55 | }, | ||
56 | } | ||
57 | } | ||