1package context
2
3import (
4 "context"
5 "time"
6
7 "github.com/aws/smithy-go/middleware"
8)
9
10type s3BackendKey struct{}
11type checksumInputAlgorithmKey struct{}
12type clockSkew struct{}
13
14const (
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.
21func 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.
26func 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.
33func 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.
38func 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
44func 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
49func GetAttemptSkewContext(ctx context.Context) time.Duration {
50 x, _ := middleware.GetStackValue(ctx, clockSkew{}).(time.Duration)
51 return x
52}