package servcli import ( "encoding/base64" "net/http" ) // BasicAuthMiddleware func NewBasicAuthMiddleware(user, pass string) MiddlewareFunc { return func(next http.RoundTripper) http.RoundTripper { return newBasicAuthMW(next, user, pass) } } type BasicAuthMW struct { user, pass string next http.RoundTripper } func newBasicAuthMW(next http.RoundTripper, user, pass string) *BasicAuthMW { return &BasicAuthMW{ user: user, pass: pass, next: next, } } func (tran BasicAuthMW) RoundTrip(req *http.Request) (*http.Response, error) { if tran.user != "" && tran.pass != "" { pair := base64.StdEncoding.EncodeToString([]byte(tran.user + ":" + tran.pass)) req.Header.Set("Authorization", "Basic "+pair) } return tran.next.RoundTrip(req) } // BearerAuthMiddleware func NewBearerAuthMiddleware(token string) MiddlewareFunc { return func(next http.RoundTripper) http.RoundTripper { return newBearerAuthMW(next, token) } } type BearerAuthMW struct { token string next http.RoundTripper } func newBearerAuthMW(next http.RoundTripper, token string) *BearerAuthMW { return &BearerAuthMW{ token: token, next: next, } } func (tran BearerAuthMW) RoundTrip(req *http.Request) (*http.Response, error) { req.Header.Set("Authorization", "Bearer "+tran.token) return tran.next.RoundTrip(req) }