context.go raw
1 package context
2
3 import (
4 "context"
5 "time"
6
7 "github.com/aws/smithy-go/middleware"
8 )
9
10 type s3BackendKey struct{}
11 type checksumInputAlgorithmKey struct{}
12 type clockSkew struct{}
13
14 const (
15 // S3BackendS3Express identifies the S3Express backend
16 S3BackendS3Express = "S3Express"
17 )
18
19 // SetS3Backend stores the resolved endpoint backend within the request
20 // context, which is required for a variety of custom S3 behaviors.
21 func SetS3Backend(ctx context.Context, typ string) context.Context {
22 return middleware.WithStackValue(ctx, s3BackendKey{}, typ)
23 }
24
25 // GetS3Backend retrieves the stored endpoint backend within the context.
26 func GetS3Backend(ctx context.Context) string {
27 v, _ := middleware.GetStackValue(ctx, s3BackendKey{}).(string)
28 return v
29 }
30
31 // SetChecksumInputAlgorithm sets the request checksum algorithm on the
32 // context.
33 func SetChecksumInputAlgorithm(ctx context.Context, value string) context.Context {
34 return middleware.WithStackValue(ctx, checksumInputAlgorithmKey{}, value)
35 }
36
37 // GetChecksumInputAlgorithm returns the checksum algorithm from the context.
38 func GetChecksumInputAlgorithm(ctx context.Context) string {
39 v, _ := middleware.GetStackValue(ctx, checksumInputAlgorithmKey{}).(string)
40 return v
41 }
42
43 // SetAttemptSkewContext sets the clock skew value on the context
44 func SetAttemptSkewContext(ctx context.Context, v time.Duration) context.Context {
45 return middleware.WithStackValue(ctx, clockSkew{}, v)
46 }
47
48 // GetAttemptSkewContext gets the clock skew value from the context
49 func GetAttemptSkewContext(ctx context.Context) time.Duration {
50 x, _ := middleware.GetStackValue(ctx, clockSkew{}).(time.Duration)
51 return x
52 }
53