Skip to content
Snippets Groups Projects
Commit e83efcaf authored by michael.minelli's avatar michael.minelli
Browse files

API class creation

parent 418d9d62
No related branches found
No related tags found
No related merge requests found
import { Express } from 'express-serve-static-core';
import cors from 'cors';
import morganMiddleware from '../logging/MorganMiddleware';
import { AddressInfo } from 'net';
import http from 'http';
import helmet from 'helmet';
import express from 'express';
import WorkerTask from '../process/WorkerTask';
import multer from 'multer';
import SessionMiddleware from '../middlewares/SessionMiddleware';
import Config from '../config/Config';
import logger from '../shared/logging/WinstonLogger';
import ParamsCallbackManager from '../middlewares/ParamsCallbackManager';
import ApiRoutesManager from '../routes/ApiRoutesManager';
class API implements WorkerTask {
private readonly backend: Express;
private server: http.Server;
constructor() {
this.backend = express();
this.backend.use(multer({
limits: { fieldSize: 100 * 1024 * 1024 }
}).none()); //Used for extract params from body with format "form-data", The none is for say that we do not wait a file in params
this.backend.use(morganMiddleware); //Log API accesses
this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
this.backend.use(cors()); //Allow CORS requests
ParamsCallbackManager.register(this.backend);
this.backend.use(SessionMiddleware.register());
ApiRoutesManager.registerOnBackend(this.backend);
}
run() {
this.server = this.backend.listen(Config.api.port, '0.0.0.0', () => {
const {
port,
address
} = this.server.address() as AddressInfo;
logger.info(`Server started on http://${ address }:${ port }`);
});
}
}
export default API;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment