package cache

import (
	"context"

	"golang.org/x/oauth2"
)

type TokenCache interface {
	Store(key string, t *oauth2.Token) error
	Lookup(key string) (*oauth2.Token, error)
}

var tokenCache int

func WithTokenCache(ctx context.Context, c TokenCache) context.Context {
	return context.WithValue(ctx, &tokenCache, c)
}

func GetTokenCache(ctx context.Context) TokenCache {
	c, ok := ctx.Value(&tokenCache).(TokenCache)
	if !ok {
		return &FileTokenCache{}
	}
	return c
}