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}