gitlink-cli/internal/auth/transport.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{},
}
}