vulcain-corejs
Version:
Vulcain micro-service framework
116 lines (115 loc) • 3.81 kB
TypeScript
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>;
}