Skip to content
Snippets Groups Projects
Select Git revision
  • 01ca6c7d4c78d4872a3bf10ab096af66b698d361
  • main default protected
  • add_export_route
  • add_route_assignments
  • 4.1.0-dev
  • 4.0.0
  • 3.5.3
  • 3.5.3-dev
  • 3.5.2
  • 3.5.2-dev
  • 3.5.1
  • 3.5.1-dev
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.0
  • 3.1.3
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.1
  • 3.0.0
24 results

API.ts

Blame
  • Forked from Dojo Project (HES-SO) / Projects / Backend / DojoBackendAPI
    Source project has a limited visibility.
    API.ts 2.01 KiB
    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';
    import compression           from 'compression';
    
    
    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
            this.backend.use(compression()); //Compress responses
    
            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;