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  }