Documentation ¶
Index ¶
- func RequestRetryAll(retryFuncs ...RequestRetryFunc) func(resp *http.Response, o *odata.OData) (bool, error)
- func RequestRetryAny(retryFuncs ...RequestRetryFunc) func(resp *http.Response, o *odata.OData) (bool, error)
- func RetryOn404ConsistencyFailureFunc(resp *http.Response, _ *odata.OData) (bool, error)
- func RetryableErrorHandler(resp *http.Response, err error, _ int) (*http.Response, error)
- type BaseClient
- type Client
- func (c *Client) AppendRequestMiddleware(f RequestMiddleware)
- func (c *Client) AppendResponseMiddleware(f ResponseMiddleware)
- func (c *Client) ClearRequestMiddlewares()
- func (c *Client) ClearResponseMiddlewares()
- func (c *Client) Execute(ctx context.Context, req *Request) (*Response, error)
- func (c *Client) ExecutePaged(ctx context.Context, req *Request) (*Response, error)
- func (c *Client) GetUserAgent() string
- func (c *Client) NewRequest(ctx context.Context, input RequestOptions) (*Request, error)
- func (c *Client) SetAuthorizer(authorizer auth.Authorizer)
- func (c *Client) SetUserAgent(userAgent string)
- type Headers
- type Options
- type QueryParams
- type Request
- type RequestMiddleware
- type RequestOptions
- type RequestRetryFunc
- type Response
- type ResponseErrorParser
- type ResponseMiddleware
- type ValidStatusFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RequestRetryAll ¶
func RequestRetryAll(retryFuncs ...RequestRetryFunc) func(resp *http.Response, o *odata.OData) (bool, error)
RequestRetryAll wraps multiple RequestRetryFuncs and calls them in turn, only returning true if all funcs return true
func RequestRetryAny ¶
func RequestRetryAny(retryFuncs ...RequestRetryFunc) func(resp *http.Response, o *odata.OData) (bool, error)
RequestRetryAny wraps multiple RequestRetryFuncs and calls them in turn, returning true if any func returns true
func RetryOn404ConsistencyFailureFunc ¶
RetryOn404ConsistencyFailureFunc can be used to retry a request when a 404 response is received
Types ¶
type BaseClient ¶
type BaseClient interface { // Execute invokes a non-paginated API request and returns a populated *Response Execute(ctx context.Context, req *Request) (*Response, error) // ExecutePaged invokes a paginated API request, merges the results from all pages and returns a populated *Response with all results ExecutePaged(ctx context.Context, req *Request) (*Response, error) // NewRequest constructs a *Request that can be passed to Execute or ExecutePaged NewRequest(ctx context.Context, input RequestOptions) (*Request, error) // SetAuthorizer configures the request authorizer for the client SetAuthorizer(auth.Authorizer) // SetUserAgent configures the user agent to be included in requests SetUserAgent(string) // GetUserAgent retrieves the configured user agent for the client GetUserAgent() string // AppendRequestMiddleware appends a request middleware function for the client AppendRequestMiddleware(RequestMiddleware) // ClearRequestMiddlewares removes all request middleware functions for the client ClearRequestMiddlewares() // AppendResponseMiddleware appends a response middleware function for the client AppendResponseMiddleware(ResponseMiddleware) // ClearResponseMiddlewares removes all response middleware functions for the client ClearResponseMiddlewares() }
type Client ¶
type Client struct { // BaseUri is the base endpoint for this API. BaseUri string // UserAgent is the HTTP user agent string to send in requests. UserAgent string // CorrelationId is a custom correlation ID which can be added to requests for tracing purposes CorrelationId string // Authorizer is anything that can provide an access token with which to authorize requests. Authorizer auth.Authorizer // AuthorizeRequest is an optional function to decorate a Request for authorization prior to being sent. // When nil, a standard Authorization header will be added using a bearer token as returned by the Token method // of the configured Authorizer. Define this function in order to customize the request authorization. AuthorizeRequest func(context.Context, *http.Request, auth.Authorizer) error // DisableRetries prevents the client from reattempting failed requests (which it does to work around eventual consistency issues). // This does not impact handling of retries related to rate limiting, which are always performed. DisableRetries bool // RequestMiddlewares is a slice of functions that are called in order before a request is sent RequestMiddlewares *[]RequestMiddleware // ResponseMiddlewares is a slice of functions that are called in order before a response is parsed and returned ResponseMiddlewares *[]ResponseMiddleware }
Client is a base client to be used by API-specific clients. It satisfies the BaseClient interface.
func (*Client) AppendRequestMiddleware ¶
func (c *Client) AppendRequestMiddleware(f RequestMiddleware)
AppendRequestMiddleware appends a request middleware function for the client
func (*Client) AppendResponseMiddleware ¶
func (c *Client) AppendResponseMiddleware(f ResponseMiddleware)
AppendResponseMiddleware appends a response middleware function for the client
func (*Client) ClearRequestMiddlewares ¶
func (c *Client) ClearRequestMiddlewares()
ClearRequestMiddlewares removes all request middleware functions for the client
func (*Client) ClearResponseMiddlewares ¶
func (c *Client) ClearResponseMiddlewares()
ClearResponseMiddlewares removes all response middleware functions for the client
func (*Client) ExecutePaged ¶
ExecutePaged automatically pages through the results of Execute
func (*Client) GetUserAgent ¶
GetUserAgent retrieves the configured user agent for the client
func (*Client) NewRequest ¶
NewRequest configures a new *Request
func (*Client) SetAuthorizer ¶
func (c *Client) SetAuthorizer(authorizer auth.Authorizer)
SetAuthorizer configures the request authorizer for the client
func (*Client) SetUserAgent ¶
SetUserAgent configures the user agent to be included in requests
type Headers ¶
type Headers struct {
// contains filtered or unexported fields
}
Headers is a representation of the HTTP headers to be sent with a Request
func (*Headers) AppendHeader ¶
AppendHeader appends the http.Header values
type Options ¶
type Options interface { // ToHeaders yields a custom Headers struct to be appended to the request ToHeaders() *Headers // ToOData yields a custom *odata.Query struct to be appended to the request ToOData() *odata.Query // ToQuery yields a custom *QueryParams struct to be appended to the request ToQuery() *QueryParams }
type QueryParams ¶
type QueryParams struct {
// contains filtered or unexported fields
}
QueryParams is a representation of the URL query parameters to be sent with a Request
func (*QueryParams) Append ¶
func (q *QueryParams) Append(key, value string)
Append sets a single query parameter value
func (*QueryParams) AppendValues ¶
func (q *QueryParams) AppendValues(q2 url.Values)
AppendValues appends the url.Values values
func (*QueryParams) Merge ¶
func (q *QueryParams) Merge(q2 Headers)
Merge copies the query parameter values from q2, overwriting as necessary
func (*QueryParams) Values ¶
func (q *QueryParams) Values() url.Values
Values returns a url.Values map containing query parameter values
type Request ¶
type Request struct { RetryFunc RequestRetryFunc ValidStatusCodes []int ValidStatusFunc ValidStatusFunc Client BaseClient Pager odata.CustomPager CustomErrorParser ResponseErrorParser // Embed *http.Request so that we can send this to an *http.Client *http.Request }
Request embeds *http.Request and adds useful metadata
func (*Request) ExecutePaged ¶
ExecutePaged invokes the ExecutePaged method for the Request's Client
func (*Request) IsIdempotent ¶
IsIdempotent determines whether a Request can be safely retried when encountering a connection failure
type RequestMiddleware ¶
RequestMiddleware can manipulate or log a request before it is sent
type RequestOptions ¶
type RequestOptions struct { // ContentType is the content type of the request and should include the charset ContentType string // ExpectedStatusCodes is a slice of HTTP response codes considered valid for this request ExpectedStatusCodes []int // HttpMethod is the capitalized method verb for this request HttpMethod string // OptionsObject is used for dynamically modifying the request at runtime OptionsObject Options // Pager is an optional struct for handling custom pagination for this request. OData 4.0 compliant paging // is already handled implicitly and does not require a custom pager. Pager odata.CustomPager // Path is the absolute URI for this request, with a leading slash. Path string // RetryFunc is an optional function to determine whether a request should be automatically retried RetryFunc RequestRetryFunc }
func (RequestOptions) Validate ¶
func (ro RequestOptions) Validate() error
type RequestRetryFunc ¶
RequestRetryFunc is a function that determines whether an HTTP request has failed due to eventual consistency and should be retried
type ResponseErrorParser ¶
ResponseErrorParser is an optional custom parser that can parse an API error response to provide a friendly error
type ResponseMiddleware ¶
ResponseMiddleware can manipulate or log a response before it is parsed and returned