github.com/qiniu/go-sdk/v7@v7.27.0/internal/clientv2/interceptor_uptoken.go (about) 1 package clientv2 2 3 import ( 4 "net/http" 5 6 "github.com/qiniu/go-sdk/v7/storagev2/uptoken" 7 ) 8 9 type UpTokenConfig struct { 10 // 上传凭证 11 UpToken uptoken.UpTokenProvider 12 } 13 14 type uptokenInterceptor struct { 15 config UpTokenConfig 16 } 17 18 func NewUpTokenInterceptor(config UpTokenConfig) Interceptor { 19 return &uptokenInterceptor{ 20 config: config, 21 } 22 } 23 24 func (interceptor *uptokenInterceptor) Priority() InterceptorPriority { 25 return InterceptorPriorityAuth 26 } 27 28 func (interceptor *uptokenInterceptor) Intercept(req *http.Request, handler Handler) (*http.Response, error) { 29 if interceptor == nil || req == nil { 30 return handler(req) 31 } 32 33 if upToken := interceptor.config.UpToken; upToken != nil { 34 if upToken, err := upToken.GetUpToken(req.Context()); err != nil { 35 return nil, err 36 } else { 37 req.Header.Set("Authorization", "UpToken "+upToken) 38 } 39 } 40 41 return handler(req) 42 }