connection

package
v1.16.6 Latest Latest
Warning

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

Go to latest
Published: Jul 19, 2023 License: MIT Imports: 16 Imported by: 10

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func APIResponseJSONDeserializer added in v1.14.4

func APIResponseJSONDeserializer(r *APIResponse, out interface{}) error

func DeleteRaw added in v1.13.0

func DeleteRaw(conn Connection, resource string, body interface{}, responseBody interface{}, handlers ...ResponseHandler) error

func GetRaw added in v1.13.0

func GetRaw(conn Connection, resource string, parameters APIRequestParameters, responseBody interface{}, handlers ...ResponseHandler) error

func InvokeRequestAll

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

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

func PatchRaw added in v1.13.0

func PatchRaw(conn Connection, resource string, body interface{}, responseBody interface{}, handlers ...ResponseHandler) error

func PostRaw added in v1.13.0

func PostRaw(conn Connection, resource string, body interface{}, responseBody interface{}, handlers ...ResponseHandler) error

func PutRaw added in v1.13.0

func PutRaw(conn Connection, resource string, body interface{}, responseBody interface{}, handlers ...ResponseHandler) error

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

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

func NewAPIRequestParameters() *APIRequestParameters

func (*APIRequestParameters) Copy

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) HandleResponse

func (r *APIResponse) HandleResponse(respBody interface{}, 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) bool

ValidateStatusCode validates the API response

type APIResponseBody

type APIResponseBody struct {
	APIResponseBodyError

	Metadata APIResponseMetadata `json:"meta"`
}

APIResponseBody represents the base API response body

type APIResponseBodyData

type APIResponseBodyData[T any] struct {
	APIResponseBody

	Data T `json:"data"`
}

APIResponseBodyStringData represents the API response body containing generic data

func Delete added in v1.10.0

func Delete[T any](conn Connection, resource string, body interface{}, handlers ...ResponseHandler) (*APIResponseBodyData[T], error)

func Get added in v1.10.0

func Get[T any](conn Connection, resource string, parameters APIRequestParameters, handlers ...ResponseHandler) (*APIResponseBodyData[T], error)

func Patch added in v1.10.0

func Patch[T any](conn Connection, resource string, body interface{}, handlers ...ResponseHandler) (*APIResponseBodyData[T], error)

func Post added in v1.10.0

func Post[T any](conn Connection, resource string, body interface{}, handlers ...ResponseHandler) (*APIResponseBodyData[T], error)

func Put added in v1.10.0

func Put[T any](conn Connection, resource string, body interface{}, handlers ...ResponseHandler) (*APIResponseBodyData[T], error)

type APIResponseBodyError added in v1.10.1

type APIResponseBodyError struct {
	Errors  []APIResponseBodyErrorItem `json:"errors"`
	Message string                     `json:"message"`
}

func (*APIResponseBodyError) Error added in v1.10.1

func (e *APIResponseBodyError) Error() string

type APIResponseBodyErrorItem added in v1.10.1

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

APIResponseBodyErrorItem represents an API response error

func (*APIResponseBodyErrorItem) Error added in v1.10.1

func (a *APIResponseBodyErrorItem) Error() string

type APIResponseBodyStringData

type APIResponseBodyStringData struct {
	APIResponseBody

	Data string `json:"data"`
}

APIResponseBodyStringData represents the API response body containing string data

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 ConnectionFactory added in v1.16.0

type ConnectionFactory interface {
	NewConnection() (Connection, 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 DefaultConnectionFactory added in v1.16.0

type DefaultConnectionFactory struct {
	// contains filtered or unexported fields
}

func NewDefaultConnectionFactory added in v1.16.0

func NewDefaultConnectionFactory(opts ...DefaultConnectionFactoryOption) *DefaultConnectionFactory

func (*DefaultConnectionFactory) NewConnection added in v1.16.0

func (f *DefaultConnectionFactory) NewConnection() (Connection, error)

type DefaultConnectionFactoryOption added in v1.16.0

type DefaultConnectionFactoryOption func(f *DefaultConnectionFactory)

func WithDefaultConnectionUserAgent added in v1.16.0

func WithDefaultConnectionUserAgent(userAgent string) DefaultConnectionFactoryOption

type Enum

type Enum interface {
	String() string
}

func ParseEnum

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

type EnumSlice []Enum

func (EnumSlice) String

func (enums EnumSlice) String() string

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

func (EnumSlice) StringSlice

func (enums EnumSlice) StringSlice() []string

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

type ErrInvalidEnumValue

type ErrInvalidEnumValue struct {
	Message string
}

func NewErrInvalidEnumValue

func NewErrInvalidEnumValue(msg string) *ErrInvalidEnumValue

func (*ErrInvalidEnumValue) Error

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

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

func NewPaginated

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

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

CurrentPage returns the current page

func (*Paginated[T]) First

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

First returns the the first page

func (*Paginated[T]) Items

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

TotalPages returns the total number of pages

func (*Paginated[T]) Last

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

Last returns the the last page

func (*Paginated[T]) Next

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

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

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

Total returns the total number of items for current page

func (*Paginated[T]) TotalPages

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

TotalPages returns the total number of pages

type PaginatedGetFunc

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 RequestSerializer added in v1.14.4

type RequestSerializer interface {
	Serialize() ([]byte, error)
}

type ResponseDeserializer added in v1.13.0

type ResponseDeserializer interface {
	Deserialize(r *APIResponse) error
}

type ResponseHandler

type ResponseHandler func(resp *APIResponse) error

func NotFoundResponseHandler added in v1.10.0

func NotFoundResponseHandler(err error) ResponseHandler

func StatusCodeResponseHandler added in v1.10.0

func StatusCodeResponseHandler(code int, err error) ResponseHandler

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