auth.go raw

   1  package auth
   2  
   3  import (
   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.
  12  type HTTPAuthScheme struct {
  13  	schemeID string
  14  	signer   smithyhttp.Signer
  15  }
  16  
  17  var _ smithyhttp.AuthScheme = (*HTTPAuthScheme)(nil)
  18  
  19  // NewHTTPAuthScheme returns an auth scheme instance with the given config.
  20  func 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.
  28  func (s *HTTPAuthScheme) SchemeID() string {
  29  	return s.schemeID
  30  }
  31  
  32  // IdentityResolver gets the identity resolver for the auth scheme.
  33  func (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.
  38  func (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.
  43  func (s *HTTPAuthScheme) WithSigner(signer smithyhttp.Signer) *HTTPAuthScheme {
  44  	return NewHTTPAuthScheme(s.schemeID, signer)
  45  }
  46