@myparcel/sdk
Version:
JavaScript SDK to connect to the MyParcel API via Node.js or browser
90 lines (88 loc) • 3.18 kB
TypeScript
import { Interceptors } from './middleware/Interceptors';
import { RequestHeader, RequestHeaders, ResponseWrapper } from '../../types/request.types';
import { WithRequired } from '../../types';
import { AbstractEndpoint } from '../endpoint/AbstractEndpoint';
import { ClientConfig, ClientOptions, ClientRequest, EndpointPath, EndpointResponse, EndpointResponseBody, PaginatedEndpointResponse, Options, OptionsWithBody, OptionsWithoutBody } from './AbstractClient.types';
export declare const BASE_URL = "https://api.myparcel.nl";
export declare abstract class AbstractClient {
/**
* Interceptors for request and response.
*
* @protected
*/
interceptors: {
request: Interceptors<OptionsWithBody<AbstractEndpoint> | OptionsWithoutBody<AbstractEndpoint>>;
response: Interceptors<ResponseWrapper<EndpointResponseBody<AbstractEndpoint>>>;
};
/**
* Executes the request. Should return a promise containing the response json as object.
*/
protected abstract request: ClientRequest;
/**
* Base URL to make requests to.
*
* @protected
*/
protected baseUrl: string;
/**
* Headers to use with requests.
*
* @protected
*/
protected headers: RequestHeaders;
/**
* @protected
*/
protected parameters: Record<string, string>;
/**
* Additional client specific options.
*
* @protected
*/
protected options: ClientOptions;
/**
* Array of headers that are required. Client will throw an error if any are missing.
*
* @private
*/
private _requiredHeaders;
protected constructor(config?: ClientConfig);
get requiredHeaders(): (RequestHeader | string)[];
set requiredHeaders(value: (RequestHeader | string)[]);
/**
* Prepare and execute the final request and handle the response.
*/
doRequest<E extends AbstractEndpoint>(endpoint: E, options: Options<E>): Promise<EndpointResponse<E>>;
getResponseBody<E extends AbstractEndpoint>(endpoint: E, response: EndpointResponse<E>): EndpointResponse<E> | PaginatedEndpointResponse<E>;
/**
* Gets default and custom headers.
*
* @protected
*/
protected getHeaders(): RequestHeaders;
/**
* Uses the base url, endpoint and options to create the final request url.
*
* @protected
*/
protected createUrl<E extends AbstractEndpoint>(endpoint: E, options: Options<E>): string;
/**
* Replace path variables in an url path. Deletes optional parameters if
* they're not passed.
*
* @protected
*/
protected substitutePath<E extends AbstractEndpoint>(urlPath: string, pathVariables?: EndpointPath<E>): string;
/**
* Validates headers passed in options.
*
* @protected
*/
protected validateHeaders<E extends AbstractEndpoint>(endpoint: E, options: WithRequired<Options<E>, 'headers'>): void;
/**
* Executes transformations on options before request.
*
* @protected
*/
protected normalizeOptions<E extends AbstractEndpoint>(endpoint: E, options: Options<E>): WithRequired<Options<E>, 'headers'>;
}