auth.go

 1package auth
 2
 3import (
 4	"github.com/aws/smithy-go/auth"
 5	smithyhttp "github.com/aws/smithy-go/transport/http"
 6)
 7
 8// HTTPAuthScheme is the SDK's internal implementation of smithyhttp.AuthScheme
 9// for pre-existing implementations where the signer was added to client
10// config. SDK clients will key off of this type and ensure per-operation
11// updates to those signers persist on the scheme itself.
12type HTTPAuthScheme struct {
13	schemeID string
14	signer   smithyhttp.Signer
15}
16
17var _ smithyhttp.AuthScheme = (*HTTPAuthScheme)(nil)
18
19// NewHTTPAuthScheme returns an auth scheme instance with the given config.
20func NewHTTPAuthScheme(schemeID string, signer smithyhttp.Signer) *HTTPAuthScheme {
21	return &HTTPAuthScheme{
22		schemeID: schemeID,
23		signer:   signer,
24	}
25}
26
27// SchemeID identifies the auth scheme.
28func (s *HTTPAuthScheme) SchemeID() string {
29	return s.schemeID
30}
31
32// IdentityResolver gets the identity resolver for the auth scheme.
33func (s *HTTPAuthScheme) IdentityResolver(o auth.IdentityResolverOptions) auth.IdentityResolver {
34	return o.GetIdentityResolver(s.schemeID)
35}
36
37// Signer gets the signer for the auth scheme.
38func (s *HTTPAuthScheme) Signer() smithyhttp.Signer {
39	return s.signer
40}
41
42// WithSigner returns a new instance of the auth scheme with the updated signer.
43func (s *HTTPAuthScheme) WithSigner(signer smithyhttp.Signer) *HTTPAuthScheme {
44	return NewHTTPAuthScheme(s.schemeID, signer)
45}