metadata.go

 1package retry
 2
 3import (
 4	awsmiddle "github.com/aws/aws-sdk-go-v2/aws/middleware"
 5	"github.com/aws/smithy-go/middleware"
 6)
 7
 8// attemptResultsKey is a metadata accessor key to retrieve metadata
 9// for all request attempts.
10type attemptResultsKey struct {
11}
12
13// GetAttemptResults retrieves attempts results from middleware metadata.
14func GetAttemptResults(metadata middleware.Metadata) (AttemptResults, bool) {
15	m, ok := metadata.Get(attemptResultsKey{}).(AttemptResults)
16	return m, ok
17}
18
19// AttemptResults represents struct containing metadata returned by all request attempts.
20type AttemptResults struct {
21
22	// Results is a slice consisting attempt result from all request attempts.
23	// Results are stored in order request attempt is made.
24	Results []AttemptResult
25}
26
27// AttemptResult represents attempt result returned by a single request attempt.
28type AttemptResult struct {
29
30	// Err is the error if received for the request attempt.
31	Err error
32
33	// Retryable denotes if request may be retried. This states if an
34	// error is considered retryable.
35	Retryable bool
36
37	// Retried indicates if this request was retried.
38	Retried bool
39
40	// ResponseMetadata is any existing metadata passed via the response middlewares.
41	ResponseMetadata middleware.Metadata
42}
43
44// addAttemptResults adds attempt results to middleware metadata
45func addAttemptResults(metadata *middleware.Metadata, v AttemptResults) {
46	metadata.Set(attemptResultsKey{}, v)
47}
48
49// GetRawResponse returns raw response recorded for the attempt result
50func (a AttemptResult) GetRawResponse() interface{} {
51	return awsmiddle.GetRawResponse(a.ResponseMetadata)
52}