///
import * as Service from '../sources/Service';
import { Logger } from '../sources/Logger';
import * as events from 'events';
import * as NodeHttp from 'http';
import * as Express from 'express';
import * as BodyParser from 'body-parser';
import * as cors from 'cors';
import * as fs from 'fs';
export interface Cases {
[eventType: string]: [number, string];
}
export interface Attachments {
[name: string]: AttachmentFile;
}
export interface AttachmentFile {
name: string;
filepath: string;
head: Buffer;
size: number;
headers: {
[name: string]: string | Array;
};
disposition: {
[name: string]: string;
};
stream?: fs.WriteStream;
}
export interface Request extends Express.Request {
remoteAddress: string;
readable: boolean;
}
export interface Response extends Express.Response {
req: Request;
}
export declare class AccessError extends Error {
statusCode: number;
constructor(message: string, statusCode?: number);
}
interface headers {
[key: string]: string | number;
}
interface respondOptions {
type: 'json' | 'buffer' | 'file';
code?: number;
headers?: headers;
data?: any;
wrap?: boolean;
filepath?: string;
buffer?: Buffer;
}
export interface props extends Service.props {
HTTP: {
port: number;
ip?: string;
cors?: cors.CorsOptions;
bodyParser?: {
json?: BodyParser.OptionsJson;
urlencoded?: BodyParser.OptionsUrlencoded;
raw?: BodyParser.OptionsText;
};
headers?: {
[name: string]: string;
};
uploadDir?: string;
headSize?: number;
};
}
export declare class HTTPService extends Service.Service {
protected config: props['HTTP'];
protected express: Express.Express;
protected server: NodeHttp.Server;
protected headers: {
[name: string]: string;
};
protected useCustomHandler: Boolean;
constructor(props: props);
start(): Promise;
protected getHandler(req: Request): string;
protected handleHttpRequest(req: Request, res: Response, next: () => void): Promise;
protected getSSEController(req: Request, res: Response): SSEController;
protected storeAttachments(req: Request, dirpath?: string): Promise;
protected respond(res: Response, code: any, data?: any, options?: any): Promise;
protected respondJSON(res: Response, options: Omit): Promise;
protected respondFile(res: Response, options: Omit): Promise;
protected respondBuffer(res: Response, options: Omit): Promise;
protected respondServerError(res: Response, error: Error): Promise;
protected extractRemoteAddress(req: any): any;
}
export declare class SSEController extends events.EventEmitter {
protected request: Request;
protected response: Response;
protected logger: Logger;
constructor(req: Request, res: Response);
sendEvent(data: Buffer | Object | string | number | boolean): void;
sendEvent(type: string, data?: Buffer | Object | string | number | boolean): void;
close(): void;
}
export {};