UNPKG

vulcain-corejs

Version:
116 lines (115 loc) 3.81 kB
import { IContainer } from './../../di/resolvers'; import { QueryResponse } from './../../pipeline/query'; import { ActionResponse } from './../../pipeline/actions'; import * as types from './types'; import 'reflect-metadata'; import { CommonRequestResponse } from '../../pipeline/common'; import { IMetrics } from '../../metrics/metrics'; import { RequestContext } from '../../servers/requestContext'; /** * * * @export * @abstract * @class AbstractCommand * @template T */ export declare abstract class AbstractServiceCommand { private overrideAuthorization; private overrideTenant; protected metrics: IMetrics; private customTags; /** * * * @type {RequestContext} */ requestContext: RequestContext; readonly container: IContainer; private static METRICS_NAME; /** * Creates an instance of AbstractCommand. * * @param {IContainer} container * @param {any} providerFactory */ constructor(container: IContainer); /** * Set (or reset) apikey authorization to use for calling service. * * @protected * @param {string} apiKey - null for reset * * @memberOf AbstractServiceCommand */ protected useApiKey(apiKey: string, tenant?: string): void; protected initializeMetricsInfo(): void; protected setMetricsTags(targetServiceName: string, targetServiceVersion: string): void; onCommandCompleted(duration: number, success: boolean): void; /** * * * @private * @param {string} serviceName * @param {number} version * @returns */ private createServiceName(serviceName, version); /** * get a domain element * @param serviceName - full service name * @param version - version of the service * @param id - Element id * @param schema - optional element schema * @returns A vulcain request response * * @protected * @template T * @param {string} serviceName * @param {number} version * @param {string} id * @param {string} [schema] * @returns {Promise<QueryResponse<T>>} */ protected getRequestAsync<T>(serviceName: string, version: string, id: string, schema?: string): Promise<QueryResponse<T>>; /** * * * @protected * @template T * @param {string} serviceName * @param {number} version * @param {string} action * @param {*} [query] * @param {number} [page] * @param {number} [maxByPage] * @param {string} [schema] * @returns {Promise<QueryResponse<T>>} */ protected getQueryAsync<T>(serviceName: string, version: string, verb: string, query?: any, page?: number, maxByPage?: number, schema?: string): Promise<QueryResponse<T>>; /** * * * @protected * @param {string} serviceName * @param {number} version * @param {string} action * @param {*} data * @returns {Promise<ActionResponse<T>>} */ protected sendActionAsync<T>(serviceName: string, version: string, verb: string, data: any): Promise<ActionResponse<T>>; private calculateRequestPath(); private setUserContextAsync(request); /** * Send a http request * * @protected * @param {string} http verb to use * @param {string} url * @param {(req:types.IHttpRequest) => void} [prepareRequest] Callback to configure request before sending * @returns request response */ protected sendRequestAsync(verb: string, url: string, prepareRequest?: (req: types.IHttpRequest) => void): Promise<CommonRequestResponse<any>>; protected exec(kind: string, serviceName: string, version: string, verb: string, userContext: any, data: any, page: any, maxByPage: any): Promise<any>; runAsync(...args: any[]): Promise<any>; }