func (mfa mockFailingAuthorizer) WithAuthorization() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { return r, fmt.Errorf("ERROR: mockFailingAuthorizer returned expected error") }) } }
// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose // value is "Bearer " followed by the AccessToken of the Token. func (t *Token) WithAuthorization() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { return (autorest.WithBearerAuthorization(t.AccessToken)(p)).Prepare(r) }) } }
// RequestRecorder returns an autorest.PrepareDecorator that records requests // to ghe given slice. func RequestRecorder(requests *[]*http.Request) autorest.PrepareDecorator { if requests == nil { return nil } var mu sync.Mutex return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(req *http.Request) (*http.Request, error) { // Save the request body, since it will be consumed. reqCopy := *req if req.Body != nil { var buf bytes.Buffer if _, err := buf.ReadFrom(req.Body); err != nil { return nil, err } if err := req.Body.Close(); err != nil { return nil, err } reqCopy.Body = ioutil.NopCloser(&buf) req.Body = ioutil.NopCloser(bytes.NewReader(buf.Bytes())) } mu.Lock() *requests = append(*requests, &reqCopy) mu.Unlock() return req, nil }) } }
func withInspection() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { fmt.Printf("Inspecting Request: %s %s\n", r.Method, r.URL) return p.Prepare(r) }) } }
func (mi *mockInspector) WithInspection() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { mi.wasInvoked = true return p.Prepare(r) }) } }
func withErrorPrepareDecorator(e *error) autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { *e = fmt.Errorf("azure: Faux Prepare Error") return r, *e }) } }
func withInspection() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { log.Debug("Azure request", logutil.Fields{ "method": r.Method, "request": r.URL.String(), }) return p.Prepare(r) }) } }
// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose // value is "Bearer " followed by the AccessToken of the ServicePrincipalToken. // // By default, the token will automatically refresh if nearly expired (as determined by the // RefreshWithin interval). Use the AutoRefresh method to enable or disable automatically refreshing // tokens. func (spt *ServicePrincipalToken) WithAuthorization() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { if spt.autoRefresh { err := spt.EnsureFresh() if err != nil { return r, fmt.Errorf("azure: Failed to refresh Service Principal Token for request to %s (%v)", r.URL, err) } } return (autorest.WithBearerAuthorization(spt.AccessToken)(p)).Prepare(r) }) } }
// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose // value is "Bearer " followed by the AccessToken of the ServicePrincipalToken. // // By default, the token will automatically refresh if nearly expired (as determined by the // RefreshWithin interval). Use the AutoRefresh method to enable or disable automatically refreshing // tokens. func (spt *ServicePrincipalToken) WithAuthorization() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { if spt.autoRefresh { err := spt.EnsureFresh() if err != nil { return r, autorest.NewErrorWithError(err, "azure.ServicePrincipalToken", "WithAuthorization", nil, "Failed to refresh Service Principal Token for request to %s", r.URL) } } return (autorest.WithBearerAuthorization(spt.AccessToken)(p)).Prepare(r) }) } }
// WithAuthorization is part of the autorest.Authorizer interface. func (c *cloudSpecAuth) WithAuthorization() autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { r, err := p.Prepare(r) if err != nil { return nil, err } token, err := c.getToken() if err != nil { return nil, err } return autorest.CreatePreparer(token.WithAuthorization()).Prepare(r) }) } }
func withInspection(maxlen int64) autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { body, bodyString := handleBody(r.Body, maxlen) r.Body = body log.Print("Azure request", logutil.Fields{ "method": r.Method, "request": r.URL.String(), "body": bodyString, }) return p.Prepare(r) }) } }
// WithReturningClientID returns a PrepareDecorator that adds an HTTP extension header of // x-ms-client-request-id whose value is the passed, undecorated UUID (e.g., // "0F39878C-5F76-4DB8-A25D-61D2C193C3CA"). It also sets the x-ms-return-client-request-id // header to true such that UUID accompanies the http.Response. func WithReturningClientID(uuid string) autorest.PrepareDecorator { preparer := autorest.CreatePreparer( WithClientID(uuid), WithReturnClientID(true)) return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { r, err := p.Prepare(r) if err != nil { return r, err } return preparer.Prepare(r) }) } }
// PrepareDecorator returns an autorest.PrepareDecorator that // logs requests at trace level. func PrepareDecorator(logger loggo.Logger) autorest.PrepareDecorator { return func(p autorest.Preparer) autorest.Preparer { return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { if logger.IsTraceEnabled() { dump, err := httputil.DumpRequest(r, true) if err != nil { logger.Tracef("failed to dump request: %v", err) logger.Tracef("%+v", r) } else { logger.Tracef("%s", dump) } } return p.Prepare(r) }) } }