github.com/qiniu/go-sdk/v7@v7.27.0/internal/clientv2/interceptor_default_header.go (about)

     1  package clientv2
     2  
     3  import (
     4  	"net/http"
     5  	"time"
     6  
     7  	clientV1 "github.com/qiniu/go-sdk/v7/client"
     8  	"github.com/qiniu/go-sdk/v7/conf"
     9  )
    10  
    11  type defaultHeaderInterceptor struct{}
    12  
    13  func newDefaultHeaderInterceptor() Interceptor {
    14  	return &defaultHeaderInterceptor{}
    15  }
    16  
    17  func (interceptor *defaultHeaderInterceptor) Priority() InterceptorPriority {
    18  	return InterceptorPrioritySetHeader
    19  }
    20  
    21  func (interceptor *defaultHeaderInterceptor) Intercept(req *http.Request, handler Handler) (resp *http.Response, err error) {
    22  	if interceptor == nil || req == nil {
    23  		return handler(req)
    24  	}
    25  
    26  	if req.Header == nil {
    27  		req.Header = http.Header{}
    28  	}
    29  
    30  	if e := addUseragent(req.Header); e != nil {
    31  		return nil, e
    32  	}
    33  
    34  	if e := addXQiniuDate(req.Header); e != nil {
    35  		return nil, e
    36  	}
    37  
    38  	return handler(req)
    39  }
    40  
    41  func addUseragent(headers http.Header) error {
    42  	headers.Set("User-Agent", clientV1.UserAgent)
    43  	return nil
    44  }
    45  
    46  func addXQiniuDate(headers http.Header) error {
    47  	if conf.IsDisableQiniuTimestampSignature() {
    48  		return nil
    49  	}
    50  
    51  	timeString := time.Now().UTC().Format("20060102T150405Z")
    52  	headers.Set("X-Qiniu-Date", timeString)
    53  	return nil
    54  }