Sha256: 0559aa74829db1688cc3f8d3e95777dc7d822cb66d6a09af984bd093eb5980f0
Contents?: true
Size: 1.53 KB
Versions: 16
Compression:
Stored size: 1.53 KB
Contents
package http import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // AddResponseErrorMiddleware adds response error wrapper middleware func AddResponseErrorMiddleware(stack *middleware.Stack) error { // add error wrapper middleware before request id retriever middleware so that it can wrap the error response // returned by operation deserializers return stack.Deserialize.Insert(&responseErrorWrapper{}, "RequestIDRetriever", middleware.Before) } type responseErrorWrapper struct { } // ID returns the middleware identifier func (m *responseErrorWrapper) ID() string { return "ResponseErrorWrapper" } func (m *responseErrorWrapper) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) if err == nil { // Nothing to do when there is no error. return out, metadata, err } resp, ok := out.RawResponse.(*smithyhttp.Response) if !ok { // No raw response to wrap with. return out, metadata, err } // look for request id in metadata reqID, _ := awsmiddleware.GetRequestIDMetadata(metadata) // Wrap the returned smithy error with the request id retrieved from the metadata err = &ResponseError{ ResponseError: &smithyhttp.ResponseError{ Response: resp, Err: err, }, RequestID: reqID, } return out, metadata, err }
Version data entries
16 entries across 16 versions & 1 rubygems