github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/downloader/interceptor.go (about) 1 package downloader 2 3 import ( 4 "net/http" 5 6 "github.com/qiniu/go-sdk/v7/internal/clientv2" 7 ) 8 9 type ( 10 retryWhenTokenOutOfDateInterceptor struct{} 11 urlsIterContextKey struct{} 12 ) 13 14 func (interceptor retryWhenTokenOutOfDateInterceptor) Priority() clientv2.InterceptorPriority { 15 return clientv2.InterceptorPriorityAuth 16 } 17 18 func (interceptor retryWhenTokenOutOfDateInterceptor) Intercept(req *http.Request, handler clientv2.Handler) (resp *http.Response, err error) { 19 if urlsIter, ok := req.Context().Value(urlsIterContextKey{}).(URLsIter); ok { 20 if _, err = urlsIter.Peek(req.URL); err != nil { 21 return 22 } 23 } 24 resp, err = handler(req) 25 return 26 }