github.com/qiniu/go-sdk/v7@v7.27.0/pili/auth.go (about)

     1  package pili
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/qiniu/go-sdk/v7/auth"
     7  )
     8  
     9  type transport struct {
    10  	http.RoundTripper
    11  	mac *auth.Credentials
    12  }
    13  
    14  // newTransport 将鉴权签算逻辑放在transport中进行处理
    15  func newTransport(mac *auth.Credentials, tr http.RoundTripper) *transport {
    16  	if tr == nil {
    17  		tr = http.DefaultTransport
    18  	}
    19  	return &transport{tr, mac}
    20  }
    21  
    22  func (t *transport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
    23  	token, err := t.mac.SignRequestV2(req)
    24  	if err != nil {
    25  		return
    26  	}
    27  	req.Header.Set("Authorization", "Qiniu "+token)
    28  	return t.RoundTripper.RoundTrip(req)
    29  }