context.go

 1package presignedurl
 2
 3import (
 4	"context"
 5
 6	"github.com/aws/smithy-go/middleware"
 7)
 8
 9// WithIsPresigning adds the isPresigning sentinel value to a context to signal
10// that the middleware stack is using the presign flow.
11//
12// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
13// to clear all stack values.
14func WithIsPresigning(ctx context.Context) context.Context {
15	return middleware.WithStackValue(ctx, isPresigningKey{}, true)
16}
17
18// GetIsPresigning returns if the context contains the isPresigning sentinel
19// value for presigning flows.
20//
21// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
22// to clear all stack values.
23func GetIsPresigning(ctx context.Context) bool {
24	v, _ := middleware.GetStackValue(ctx, isPresigningKey{}).(bool)
25	return v
26}
27
28type isPresigningKey struct{}
29
30// AddAsIsPresigningMiddleware adds a middleware to the head of the stack that
31// will update the stack's context to be flagged as being invoked for the
32// purpose of presigning.
33func AddAsIsPresigningMiddleware(stack *middleware.Stack) error {
34	return stack.Initialize.Add(asIsPresigningMiddleware{}, middleware.Before)
35}
36
37// AddAsIsPresigingMiddleware is an alias for backwards compatibility.
38//
39// Deprecated: This API was released with a typo. Use
40// [AddAsIsPresigningMiddleware] instead.
41func AddAsIsPresigingMiddleware(stack *middleware.Stack) error {
42	return AddAsIsPresigningMiddleware(stack)
43}
44
45type asIsPresigningMiddleware struct{}
46
47func (asIsPresigningMiddleware) ID() string { return "AsIsPresigningMiddleware" }
48
49func (asIsPresigningMiddleware) HandleInitialize(
50	ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler,
51) (
52	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
53) {
54	ctx = WithIsPresigning(ctx)
55	return next.HandleInitialize(ctx, in)
56}