bearer_token_adapter.go raw

   1  package smithy
   2  
   3  import (
   4  	"context"
   5  	"fmt"
   6  	"time"
   7  
   8  	"github.com/aws/smithy-go"
   9  	"github.com/aws/smithy-go/auth"
  10  	"github.com/aws/smithy-go/auth/bearer"
  11  )
  12  
  13  // BearerTokenAdapter adapts smithy bearer.Token to smithy auth.Identity.
  14  type BearerTokenAdapter struct {
  15  	Token bearer.Token
  16  }
  17  
  18  var _ auth.Identity = (*BearerTokenAdapter)(nil)
  19  
  20  // Expiration returns the time of expiration for the token.
  21  func (v *BearerTokenAdapter) Expiration() time.Time {
  22  	return v.Token.Expires
  23  }
  24  
  25  // BearerTokenProviderAdapter adapts smithy bearer.TokenProvider to smithy
  26  // auth.IdentityResolver.
  27  type BearerTokenProviderAdapter struct {
  28  	Provider bearer.TokenProvider
  29  }
  30  
  31  var _ (auth.IdentityResolver) = (*BearerTokenProviderAdapter)(nil)
  32  
  33  // GetIdentity retrieves a bearer token using the underlying provider.
  34  func (v *BearerTokenProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) (
  35  	auth.Identity, error,
  36  ) {
  37  	token, err := v.Provider.RetrieveBearerToken(ctx)
  38  	if err != nil {
  39  		return nil, fmt.Errorf("get token: %w", err)
  40  	}
  41  
  42  	return &BearerTokenAdapter{Token: token}, nil
  43  }
  44