connection

package
v1.6.3 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2022 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InvokeRequestAll added in v1.1.0

func InvokeRequestAll[T any](getFunc PaginatedGetFunc[T], parameters APIRequestParameters) ([]T, error)

InvokeRequestAll is a convenience method for initialising RequestAll and calling Invoke()

Types

type APIConnection

type APIConnection struct {
	HTTPClient  *http.Client
	Credentials Credentials
	APIURI      string
	APIScheme   string
	Headers     http.Header
	UserAgent   string
}

func NewAPIConnection

func NewAPIConnection(credentials Credentials) *APIConnection

func NewAPIKeyCredentialsAPIConnection

func NewAPIKeyCredentialsAPIConnection(apiKey string) *APIConnection

NewAPIKeyCredentialsAPIConnection creates a new client

func (*APIConnection) Delete

func (c *APIConnection) Delete(resource string, body interface{}) (*APIResponse, error)

Delete invokes a DELETE request, returning an APIResponse

func (*APIConnection) Get

func (c *APIConnection) Get(resource string, parameters APIRequestParameters) (*APIResponse, error)

Get invokes a GET request, returning an APIResponse

func (*APIConnection) Invoke

func (c *APIConnection) Invoke(request APIRequest) (*APIResponse, error)

Invoke invokes a request, returning an APIResponse

func (*APIConnection) InvokeRequest

func (c *APIConnection) InvokeRequest(req *http.Request) (*APIResponse, error)

InvokeRequest invokes a request, returning an APIResponse

func (*APIConnection) NewRequest

func (c *APIConnection) NewRequest(request APIRequest) (*http.Request, error)

NewRequest generates a new Request from given parameters

func (*APIConnection) Patch

func (c *APIConnection) Patch(resource string, body interface{}) (*APIResponse, error)

Patch invokes a PATCH request, returning an APIResponse

func (*APIConnection) Post

func (c *APIConnection) Post(resource string, body interface{}) (*APIResponse, error)

Post invokes a POST request, returning an APIResponse

func (*APIConnection) Put

func (c *APIConnection) Put(resource string, body interface{}) (*APIResponse, error)

Put invokes a PUT request, returning an APIResponse

type APIKeyCredentials

type APIKeyCredentials struct {
	APIKey string
}

func (*APIKeyCredentials) GetAuthHeaders

func (c *APIKeyCredentials) GetAuthHeaders() AuthHeaders

GetAuthHeaders returns the Authorization header for API key

type APIRequest

type APIRequest struct {
	Method     string
	Resource   string
	Body       interface{}
	Parameters APIRequestParameters
}

type APIRequestBodyDefaultValidator

type APIRequestBodyDefaultValidator struct {
}

APIRequestBodyDefaultValidator provides convenience method Validate() for validating a struct/item, utilising the validator.v9 package

func (*APIRequestBodyDefaultValidator) Validate

func (a *APIRequestBodyDefaultValidator) Validate(v interface{}) *ValidationError

Validate performs validation on item v using the validator.v9 package

type APIRequestFiltering

type APIRequestFiltering struct {
	Property string
	Operator APIRequestFilteringOperator
	Value    []string
}

func NewAPIRequestFiltering added in v1.3.28

func NewAPIRequestFiltering(property string, operator APIRequestFilteringOperator, value []string) *APIRequestFiltering

type APIRequestFilteringOperator

type APIRequestFilteringOperator int
const (
	// EQOperator - equals
	EQOperator APIRequestFilteringOperator = iota
	// LKOperator - like
	LKOperator
	// GTOperator - greater than
	GTOperator
	// LTOperator - less than
	LTOperator
	// INOperator - in set
	INOperator
	// NEQOperator - not equal
	NEQOperator
	// NINOperator - not in set
	NINOperator
	// NLKOperator - not like
	NLKOperator
)

func ParseOperator

func ParseOperator(o string) (APIRequestFilteringOperator, error)

ParseOperator attempts to parse an operator from string

func (APIRequestFilteringOperator) String

type APIRequestPagination

type APIRequestPagination struct {
	PerPage int
	Page    int
}

type APIRequestParameters

type APIRequestParameters struct {
	Pagination APIRequestPagination
	Sorting    APIRequestSorting
	Filtering  []APIRequestFiltering
}

APIRequestParameters holds a collection of supported API request parameters

func NewAPIRequestParameters added in v1.3.5

func NewAPIRequestParameters() *APIRequestParameters

func (*APIRequestParameters) Copy added in v1.1.0

func (*APIRequestParameters) WithFilter

WithFilter is a fluent method for adding a set of filters to request parameters

func (*APIRequestParameters) WithPagination

func (p *APIRequestParameters) WithPagination(pagination APIRequestPagination) *APIRequestParameters

WithPagination is a fluent method for adding pagination to request parameters

func (*APIRequestParameters) WithSorting

WithSorting is a fluent method for adding sorting to request parameters

type APIRequestSorting

type APIRequestSorting struct {
	Property   string
	Descending bool
}

type APIResponse

type APIResponse struct {
	*http.Response
}

APIResponse represents the base API response

func (*APIResponse) DeserializeResponseBody

func (r *APIResponse) DeserializeResponseBody(out interface{}) error

DeserializeResponseBody deserializes the API response body and stores the result in parameter out

func (*APIResponse) HandleResponse

func (r *APIResponse) HandleResponse(respBody ResponseBody, handlers ...ResponseHandler) error

HandleResponse deserializes the response body into provided respBody, and validates the response using the optionally provided ResponseHandler handler

func (*APIResponse) ValidateStatusCode

func (r *APIResponse) ValidateStatusCode(codes []int, respBody ResponseBody) error

ValidateStatusCode validates the API response

type APIResponseBody

type APIResponseBody struct {
	Metadata APIResponseMetadata `json:"meta"`
	Errors   []APIResponseError  `json:"errors"`
	Message  string              `json:"message"`
}

APIResponseBody represents the base API response body

func (*APIResponseBody) ErrorString

func (a *APIResponseBody) ErrorString() string

ErrorString returns a formatted error string for API response

func (*APIResponseBody) Pagination

TotalPages returns amount of pages for API response

type APIResponseBodyData added in v1.6.0

type APIResponseBodyData[T any] struct {
	APIResponseBody

	Data T `json:"data"`
}

APIResponseBodyStringData represents the API response body containing generic data

type APIResponseBodyStringData added in v1.3.17

type APIResponseBodyStringData struct {
	APIResponseBody

	Data string `json:"data"`
}

APIResponseBodyStringData represents the API response body containing string data

type APIResponseError

type APIResponseError struct {
	Title  string `json:"title"`
	Detail string `json:"detail"`
	Status int    `json:"status"`
	Source string `json:"source"`
}

APIResponseError represents an API response error

func (*APIResponseError) Error

func (a *APIResponseError) Error() error

func (*APIResponseError) String

func (a *APIResponseError) String() string

type APIResponseMetadata

type APIResponseMetadata struct {
	Pagination APIResponseMetadataPagination `json:"pagination"`
}

APIResponseMetadata represents the API response metadata

type APIResponseMetadataPagination

type APIResponseMetadataPagination struct {
	Total      int                                `json:"total"`
	Count      int                                `json:"count"`
	PerPage    int                                `json:"per_page"`
	TotalPages int                                `json:"total_pages"`
	Links      APIResponseMetadataPaginationLinks `json:"links"`
}

APIResponseMetadataPagination represents the API response pagination data

type APIResponseMetadataPaginationLinks struct {
	Next     string `json:"next"`
	Previous string `json:"previous"`
	First    string `json:"first"`
	Last     string `json:"last"`
}

APIResponseMetadataPaginationLinks represents the links returned within the API response pagination data

type AuthHeaders

type AuthHeaders map[string]string

AuthHeaders is a string map of authorization headers

type Connection

type Connection interface {
	Get(resource string, parameters APIRequestParameters) (*APIResponse, error)
	Post(resource string, body interface{}) (*APIResponse, error)
	Put(resource string, body interface{}) (*APIResponse, error)
	Patch(resource string, body interface{}) (*APIResponse, error)
	Delete(resource string, body interface{}) (*APIResponse, error)
	Invoke(request APIRequest) (*APIResponse, error)
}

type Credentials

type Credentials interface {
	GetAuthHeaders() AuthHeaders
}

type Date

type Date string

Date represents date string from API

func (Date) String

func (c Date) String() string

func (Date) Time

func (c Date) Time() time.Time

Time returns Time struct for DateTime

type DateTime

type DateTime string

DateTime represents datetime string from API

func (DateTime) String

func (c DateTime) String() string

func (DateTime) Time

func (c DateTime) Time() time.Time

Time returns Time struct for DateTime

type Enum added in v1.0.16

type Enum interface {
	String() string
}

func ParseEnum added in v1.0.16

func ParseEnum(s string, enums EnumSlice) (Enum, error)

ParseEnum parses string s against array of enums, returning parsed enum and nil error, or nil with error

type EnumSlice added in v1.3.3

type EnumSlice []Enum

func (EnumSlice) String added in v1.3.3

func (enums EnumSlice) String() string

String returns string containing a comma separated list of enum string values

func (EnumSlice) StringSlice added in v1.3.3

func (enums EnumSlice) StringSlice() []string

StringSlice returns a slice of strings containing the string values of enums for EnumSlice

type ErrInvalidEnumValue added in v1.3.0

type ErrInvalidEnumValue struct {
	Message string
}

func NewErrInvalidEnumValue added in v1.3.0

func NewErrInvalidEnumValue(msg string) *ErrInvalidEnumValue

func (*ErrInvalidEnumValue) Error added in v1.3.0

func (e *ErrInvalidEnumValue) Error() string

type IPAddress

type IPAddress string

IPAddress represents ip address string from API

func (IPAddress) IP

func (i IPAddress) IP() net.IP

func (IPAddress) String

func (i IPAddress) String() string

type Paginated added in v1.1.0

type Paginated[T any] struct {
	// contains filtered or unexported fields
}

func NewPaginated added in v1.6.0

func NewPaginated[T any](body *APIResponseBodyData[[]T], parameters APIRequestParameters, getFunc PaginatedGetFunc[T]) *Paginated[T]

NewPaginated returns a pointer to an initialised Paginated

func (*Paginated[T]) CurrentPage added in v1.1.0

func (p *Paginated[T]) CurrentPage() int

CurrentPage returns the current page

func (*Paginated[T]) First added in v1.1.0

func (p *Paginated[T]) First() (*Paginated[T], error)

First returns the the first page

func (*Paginated[T]) Items added in v1.6.0

func (p *Paginated[T]) Items() []T

TotalPages returns the total number of pages

func (*Paginated[T]) Last added in v1.1.0

func (p *Paginated[T]) Last() (*Paginated[T], error)

Last returns the the last page

func (*Paginated[T]) Next added in v1.1.0

func (p *Paginated[T]) Next() (*Paginated[T], error)

Next returns the the next page, or nil if current page is the last page

func (*Paginated[T]) Previous added in v1.1.0

func (p *Paginated[T]) Previous() (*Paginated[T], error)

Previous returns the the previous page, or nil if current page is the first page

func (*Paginated[T]) Total added in v1.1.0

func (p *Paginated[T]) Total() int

Total returns the total number of items for current page

func (*Paginated[T]) TotalPages added in v1.1.0

func (p *Paginated[T]) TotalPages() int

TotalPages returns the total number of pages

type PaginatedGetFunc added in v1.1.0

type PaginatedGetFunc[T any] func(parameters APIRequestParameters) (*Paginated[T], error)

PaginatedGetFunc represents a function which can be called for returning an implementation of Paginated

type ResponseBody

type ResponseBody interface {
	ErrorString() string
	Pagination() APIResponseMetadataPagination
}

type ResponseHandler added in v1.0.32

type ResponseHandler func(resp *APIResponse) error

type Validatable

type Validatable interface {
	Validate() *ValidationError
}

type ValidationError

type ValidationError struct {
	Message string
}

func NewValidationError

func NewValidationError(msg string) *ValidationError

func (*ValidationError) Error

func (e *ValidationError) Error() string

Jump to

Keyboard shortcuts

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