]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / aws / aws-sdk-go / internal / s3err / error.go
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 }