forked from Gitlink/gitlink-cli
36 lines
739 B
Go
36 lines
739 B
Go
package auth
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
// Transport wraps an http.RoundTripper and injects the autologin token.
|
|
type Transport struct {
|
|
Base http.RoundTripper
|
|
}
|
|
|
|
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
token, err := LoadToken()
|
|
if err == nil && token != "" {
|
|
q := req.URL.Query()
|
|
q.Set("access_token", token)
|
|
req.URL.RawQuery = q.Encode()
|
|
}
|
|
if req.Body != nil && req.Header.Get("Content-Type") == "" {
|
|
req.Header.Set("Content-Type", "application/json")
|
|
}
|
|
req.Header.Set("Accept", "application/json")
|
|
|
|
base := t.Base
|
|
if base == nil {
|
|
base = http.DefaultTransport
|
|
}
|
|
return base.RoundTrip(req)
|
|
}
|
|
|
|
func NewHTTPClient() *http.Client {
|
|
return &http.Client{
|
|
Transport: &Transport{},
|
|
}
|
|
}
|