Files
eiblog/vendor/github.com/qiniu/api.v7/storage/client.go

39 lines
850 B
Go

package storage
import (
"github.com/qiniu/api.v7/auth/qbox"
"github.com/qiniu/x/rpc.v7"
"net/http"
)
type Transport struct {
mac qbox.Mac
Transport http.RoundTripper
}
func (t *Transport) NestedObject() interface{} {
return t.Transport
}
func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
token, err := t.mac.SignRequest(req)
if err != nil {
return
}
req.Header.Set("Authorization", "QBox "+token)
return t.Transport.RoundTrip(req)
}
func NewTransport(mac *qbox.Mac, transport http.RoundTripper) *Transport {
if transport == nil {
transport = http.DefaultTransport
}
t := &Transport{mac: *mac, Transport: transport}
return t
}
func NewClient(mac *qbox.Mac, transport http.RoundTripper) *rpc.Client {
t := NewTransport(mac, transport)
return &rpc.Client{&http.Client{Transport: t}}
}