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}