UNPKG

@ne1410s/http

Version:

Lightweight ES5 script to provide http utilities

52 lines (51 loc) 1.84 kB
import { Ctor } from '@ne1410s/codl'; /** * A contract for that which generates a response from a request. */ export interface IOperation<TRequest, TResponse> { /** * Performs the commands necessary to yield a response. * @param requestData The request data. * @throws {OperationInvocationError} */ invoke(requestData: TRequest): Promise<TResponse>; /** * Checks the data in a request. * @param requestData The request data. * @throws {ValidationError} */ validateRequest(requestData: TRequest): void; /** * Checks the data in a response. * @param responseData The response data. * @throws {ValidationError} */ validateResponse(responseData: TResponse): void; } /** * Base implementation for that which generates a response from a request. */ export declare abstract class OperationBase<TRequest, TResponse> implements IOperation<TRequest, TResponse> { private readonly requestType?; private readonly responseType?; /** * Creates a new instance. Parameters are model prototypes. They are only * needed if automatic validation (of @ne1410s/codl decorators) is required. * @param requestType The request type. * @param responseType The response type. */ constructor(requestType?: Ctor<TRequest>, responseType?: Ctor<TResponse>); /** * @inheritdoc */ invoke(requestData: TRequest): Promise<TResponse>; /** Validates a request according to @ne1410s/codl decorators. */ validateRequest(requestData: TRequest): void; /** Validates the response according to @ne1410s/codl decorators. */ validateResponse(responseData: TResponse): void; /** * * @param requestData The request data. */ protected abstract invokeInternal(requestData: TRequest): Promise<TResponse>; }