Authorized transport should read from cache and write to cache.

This commit is contained in:
Burcu Dogan 2014-05-19 00:20:42 +02:00
Родитель 227bfbf02f
Коммит 2e00ad50b1
1 изменённых файлов: 11 добавлений и 0 удалений

Просмотреть файл

@ -104,6 +104,12 @@ func NewAuthorizedTransport(fetcher TokenFetcher, token *Token) Transport {
// If token is expired, tries to refresh/fetch a new token.
func (t *authorizedTransport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
token := t.Token()
cache := t.fetcher.Cache()
if token == nil && cache != nil {
// Try to read from cache initially
token, _ := cache.Read()
}
if token == nil || token.Expired() {
// Check if the token is refreshable.
// If token is refreshable, don't return an error,
@ -169,6 +175,11 @@ func (t *authorizedTransport) RefreshToken() error {
}
t.token = token
cache := t.fetcher.Cache()
if cache != nil {
cache.Write(token)
}
return nil
}