| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package bearer
- import (
- "context"
- "time"
- )
- // Token provides a type wrapping a bearer token and expiration metadata.
- type Token struct {
- Value string
- CanExpire bool
- Expires time.Time
- }
- // Expired returns if the token's Expires time is before or equal to the time
- // provided. If CanExpires is false, Expired will always return false.
- func (t Token) Expired(now time.Time) bool {
- if !t.CanExpire {
- return false
- }
- now = now.Round(0)
- return now.Equal(t.Expires) || now.After(t.Expires)
- }
- // TokenProvider provides interface for retrieving bearer tokens.
- type TokenProvider interface {
- RetrieveBearerToken(context.Context) (Token, error)
- }
- // TokenProviderFunc provides a helper utility to wrap a function as a type
- // that implements the TokenProvider interface.
- type TokenProviderFunc func(context.Context) (Token, error)
- // RetrieveBearerToken calls the wrapped function, returning the Token or
- // error.
- func (fn TokenProviderFunc) RetrieveBearerToken(ctx context.Context) (Token, error) {
- return fn(ctx)
- }
- // StaticTokenProvider provides a utility for wrapping a static bearer token
- // value within an implementation of a token provider.
- type StaticTokenProvider struct {
- Token Token
- }
- // RetrieveBearerToken returns the static token specified.
- func (s StaticTokenProvider) RetrieveBearerToken(context.Context) (Token, error) {
- return s.Token, nil
- }
|