import { IContainer } from './../di/resolvers'; import { IServiceResolver } from '../di/serviceResolver'; import * as types from './types'; import 'reflect-metadata'; import { IRequestContext } from "../pipeline/common"; import { ApplicationError } from "../pipeline/errors/applicationRequestError"; import { VulcainResponse } from '../pipeline/common'; export declare class HttpCommandError extends ApplicationError { response: types.IHttpCommandResponse; error: Error; constructor(msg: any, response: types.IHttpCommandResponse | Error, statusCode?: number); } /** * * * @export * @abstract * @class AbstractCommand */ export declare abstract class AbstractServiceCommand { private overrideAuthorization; private overrideTenant; serviceResolver: IServiceResolver; /** * * * @type {IRequestContext} */ context: IRequestContext; /** * Creates an instance of AbstractCommand. */ container: IContainer; constructor(context: IRequestContext); protected setMetricTags(verb?: string, serviceName?: string, serviceVersion?: string): void; /** * Set (or reset) user context to use for calling service. * * @protected * @param {string} authorization - null for reset * @param {string} tenant - null for reset * * @memberOf AbstractServiceCommand */ protected setRequestContext(authorization?: string, tenant?: string): void; private createServiceName(serviceName, serviceVersion); /** * get a domain element * @param id - Element id * @param schema - optional element schema * @returns {Promise>} */ private getRequest(serviceName, serviceVersion, id, args?, schema?); /** * * * @template T * @param {string} action * @param {*} [query] * @param {number} [page] * @param {number} [pageSize] * @param {string} [schema] * @returns {Promise>} */ private getQuery(serviceName, serviceVersion, verb, query?, args?, page?, pageSize?, schema?); /** * * * @param {string} action * @param {*} data * @returns {Promise>} */ private sendAction(serviceName, serviceVersion, verb, data, args?); private setUserContext(request); /** * Send a http request * * @param {string} http verb to use * @param {string} url * @param {(req:types.IHttpCommandRequest) => void} [prepareRequest] Callback to configure request before sending * @returns request response */ private sendRequest(verb, url, prepareRequest?); execGet(serviceName: string, serviceVersion: string, userContext: any, data: any, args?: any): Promise>; execQuery(serviceName: string, serviceVersion: string, userContext: any, verb: string, data: any, args?: any, page?: number, pageSize?: number): Promise>; execAction(serviceName: string, serviceVersion: string, userContext: any, verb: string, data: any, args?: any): Promise>; }