@mfgx/shared-lib-http-client-core

v3.35.0

Published

An HTTP client that allows deferred execution of HTTP requests.

Readme

MFGx HTTP Client

This package contains an HTTP client implementation that leverages axios to allow deferred execution of HTTP requests.

Shared Type Definitions

HttpMethod :: head | options | get | post | put | patch | delete HttpBody :: null | String | Buffer | Blob | ReadableStream HttpEnvironment :: { httpRequest: { url: String, headers?: Object, serializer?: a -> HttpBody, timeout?: Int, maxContentLength?: Int, keepAlive?: Boolean, retry?: RetryOptions } } HttpResponse :: { statusCode: Int, statusText: String, body: a, headers: Object } HttpError :: { message: String, stack: String, info: { response: HttpResponse } }

httpRequest

Given a method and a body, this function returns a ReaderT of Async that accepts the remaining HTTP options in its environment.

By default, the retry options are configured with retries set to 0 and a retryIf function that will trigger for any of the following errors or status codes:

Errors: ['socket hang up', 'ECONNRESET', 'ETIMEDOUT', 'EADDRINUSE', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'ENETUNREACH', 'EAI_AGAIN'] Status Codes: [408, 502, 503, 504]

If you set retries to a number above 0, you'll be enable retrying based on the conditions above.

In addition, by default, the body is assumed to be JSON and will be serialized with JSON.stringify.

httpRequest :: HttpMethod -> a -> ReaderT HttpEnvironment (Async HttpError HttpResponse)

httpHead

This method is eager because a head request should not have a body. It directly takes an HTTP environment and executes it, with the HTTP method set to head.

httpHead :: HttpEnvironment -> Async HttpError HttpResponse

httpOptions

This method is eager because an options request should not have a body. It directly takes an HTTP environment and executes it, with the HTTP method set to options.

httpOptions :: HttpEnvironment -> Async HttpError HttpResponse

httpGet

This method is eager because a get request should not have a body. It directly takes an HTTP environment and executes it, with the HTTP method set to get.

httpGet :: HttpEnvironment -> Async HttpError HttpResponse

httpPost

Given a body, this function returns a ReaderT of Async that accepts the remaining HTTP options in its environment. The HTTP method is set to post.

httpPost :: a -> ReaderT HttpEnvironment (Async HttpError HttpResponse)

httpPut

Given a body, this function returns a ReaderT of Async that accepts the remaining HTTP options in its environment. The HTTP method is set to put.

httpPut :: a -> ReaderT HttpEnvironment (Async HttpError HttpResponse)

httpPatch

Given a body, this function returns a ReaderT of Async that accepts the remaining HTTP options in its environment. The HTTP method is set to patch.

httpPatch :: a -> ReaderT HttpEnvironment (Async HttpError HttpResponse)

httpDelete

Given a body, this function returns a ReaderT of Async that accepts the remaining HTTP options in its environment. The HTTP method is set to delete.

httpDelete :: a -> ReaderT HttpEnvironment (Async HttpError HttpResponse)