rest

package
v2.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultRetrySettings = RetrySettings{
	Normal: RetrySetting{
		WaitTime:   5 * time.Second,
		MaxRetries: 3,
	},
	Long: RetrySetting{
		WaitTime:   5 * time.Second,
		MaxRetries: 6,
	},
	VeryLong: RetrySetting{
		WaitTime:   15 * time.Second,
		MaxRetries: 5,
	},
}

Functions

func AddNextPageQueryParams

func AddNextPageQueryParams(u *url.URL, nextPage string) *url.URL

AddNextPageQueryParams handles both Dynatrace v1 and v2 pagination logic. For api/v2 URLs the given next page key will be the only query parameter of the modified URL For any other ULRs the given next page key will be added to existing query parameters

Types

type AddEntriesToResult

type AddEntriesToResult func(body []byte) (receivedEntries int, err error)

AddEntriesToResult is a function which should parse an API response body and append the returned entries to a result slice. Handling the parsing, any possible filtering and owning and filling the result list is left to the caller of ListPaginated, as it might differ notably between client implementations. The function MUST return the number of entries it has parsed from the received API payload body. This is used to validate that the final parsed number matches the reported total count of the API. This receivedEntries count is not necessarily equal to the number of entries added to the result slice, as filtering might exclude some entries that where received from the API.

type RequestInfo

type RequestInfo struct {
	Method string `json:"method"`
	URL    string `json:"url"`
}

type RespError

type RespError struct {
	Reason     string       `json:"reason"`
	StatusCode int          `json:"statusCode"`
	Body       string       `json:"body"`
	Err        error        `json:"error"`
	Request    *RequestInfo `json:"request"`
}

func NewRespErr

func NewRespErr(reason string, resp Response) RespError

func (RespError) ConcurrentError

func (e RespError) ConcurrentError() string

func (RespError) Error

func (e RespError) Error() string

func (RespError) Unwrap

func (e RespError) Unwrap() error

func (RespError) WithErr

func (e RespError) WithErr(err error) RespError

func (RespError) WithRequestInfo

func (e RespError) WithRequestInfo(reqMethod, reqURL string) RespError

type Response

type Response struct {
	StatusCode  int
	Body        []byte
	Headers     map[string][]string
	NextPageKey string
	TotalCount  int
	PageSize    int
}

func Delete

func Delete(ctx context.Context, client *http.Client, url string) (Response, error)

func Get

func Get(ctx context.Context, client *http.Client, url string) (Response, error)

func GetWithRetry

func GetWithRetry(ctx context.Context, client *http.Client, url string, settings RetrySetting) (resp Response, err error)

GetWithRetry will retry a GET request for a given number of times, waiting a give duration between calls this method can be used for API calls we know to have occasional timing issues on GET - e.g. paginated queries that are impacted by replication lag, returning unequal amounts of objects/pages per node

func ListPaginated

func ListPaginated(ctx context.Context, client *http.Client, retrySettings RetrySettings, url *url.URL, logLabel string,
	addToResult AddEntriesToResult) (Response, error)

func Post

func Post(ctx context.Context, client *http.Client, url string, data []byte) (Response, error)

func PostMultiPartFile

func PostMultiPartFile(ctx context.Context, client *http.Client, url string, data *bytes.Buffer, contentType string) (Response, error)

func Put

func Put(ctx context.Context, client *http.Client, url string, data []byte) (Response, error)

func SendWithRetry

func SendWithRetry(ctx context.Context, client *http.Client, sendWithBody SendRequestWithBody, objectName string, path string, body []byte, setting RetrySetting) (resp Response, err error)

SendWithRetry will retry to call sendWithBody for a given number of times, waiting a give duration between calls

func SendWithRetryWithInitialTry

func SendWithRetryWithInitialTry(ctx context.Context, client *http.Client, sendWithBody SendRequestWithBody, objectName string, path string, body []byte, setting RetrySetting) (resp Response, err error)

SendWithRetryWithInitialTry will try to call sendWithBody and if it didn't succeed call SendWithRetry

func (Response) Is4xxError

func (resp Response) Is4xxError() bool

func (Response) Is5xxError

func (resp Response) Is5xxError() bool

func (Response) IsSuccess

func (resp Response) IsSuccess() bool

type RetrySetting

type RetrySetting struct {
	WaitTime   time.Duration
	MaxRetries int
}

type RetrySettings

type RetrySettings struct {
	Normal   RetrySetting
	Long     RetrySetting
	VeryLong RetrySetting
}

type SendRequestWithBody

type SendRequestWithBody func(ctx context.Context, client *http.Client, url string, data []byte) (Response, error)

SendRequestWithBody is a function doing a PUT or POST HTTP request

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL