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

API class creation

parent 418d9d62
Branches
Tags
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