@ne1410s/http
Version:
Lightweight ES5 script to provide http utilities
52 lines (51 loc) • 1.84 kB
TypeScript
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>;
}