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}