package presignedurl

import (
	

	
)

// WithIsPresigning adds the isPresigning sentinel value to a context to signal
// that the middleware stack is using the presign flow.
//
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
// to clear all stack values.
func ( context.Context) context.Context {
	return middleware.WithStackValue(, isPresigningKey{}, true)
}

// GetIsPresigning returns if the context contains the isPresigning sentinel
// value for presigning flows.
//
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
// to clear all stack values.
func ( context.Context) bool {
	,  := middleware.GetStackValue(, isPresigningKey{}).(bool)
	return 
}

type isPresigningKey struct{}

// AddAsIsPresigingMiddleware adds a middleware to the head of the stack that
// will update the stack's context to be flagged as being invoked for the
// purpose of presigning.
func ( *middleware.Stack) error {
	return .Initialize.Add(asIsPresigningMiddleware{}, middleware.Before)
}

type asIsPresigningMiddleware struct{}

func (asIsPresigningMiddleware) () string { return "AsIsPresigningMiddleware" }

func (asIsPresigningMiddleware) (
	 context.Context,  middleware.InitializeInput,  middleware.InitializeHandler,
) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	 = WithIsPresigning()
	return .HandleInitialize(, )
}