/// 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 {};