connection

package
v1.0.14 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2019 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

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 RequestBody) (*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 RequestBody) (*APIResponse, error)

Patch invokes a PATCH request, returning an APIResponse

func (*APIConnection) Post

func (c *APIConnection) Post(resource string, body RequestBody) (*APIResponse, error)

Post invokes a POST request, returning an APIResponse

func (*APIConnection) Put

func (c *APIConnection) Put(resource string, body RequestBody) (*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       RequestBody
	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
}

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 (*APIRequestParameters) WithFilter

WithFilter is a fluent method for adding a filter to request parameters

func (*APIRequestParameters) WithFilters

WithFilters 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(codes []int, respBody ResponseBody) error

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"`
	Error    []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 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 RequestBody) (*APIResponse, error)
	Put(resource string, body RequestBody) (*APIResponse, error)
	Patch(resource string, body RequestBody) (*APIResponse, error)
	Delete(resource string, body RequestBody) (*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 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 RequestAll

type RequestAll struct {
	GetNext func(parameters APIRequestParameters) (ResponseBody, error)
}

func (*RequestAll) Invoke

func (r *RequestAll) Invoke(parameters APIRequestParameters) error

type RequestBody

type RequestBody interface {
	Validatable
}

type ResponseBody

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

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