betagouv/service-national-universel

View on GitHub
analytics/src/index.js

Summary

Maintainability
A
0 mins
Test Coverage
(async () => {
  await require("./env-manager")();

  const helmet = require("helmet");
  const bodyParser = require("body-parser");
  const express = require("express");
  const cors = require("cors");
  const { initSentry, capture } = require("./sentry");
  const { PORT } = require("./config");

  const app = express();

  const registerSentryErrorHandler = initSentry(app);

  app.use(helmet());
  app.use(helmet.hsts({ maxAge: 5184000 }));

  require("./crons");
  require("./services/databases/redis.service");

  // @todo: can it be removed?
  const origin = ["http://localhost:8085"];
  app.use(cors({ credentials: true, origin }));
  app.use(bodyParser.json({ limit: "50mb" }));
  app.use(bodyParser.text({ type: "application/x-ndjson" }));
  app.use(bodyParser.urlencoded({ extended: true }));

  app.use("/", require("./controllers/health.controller"));
  app.use("/auth", require("./controllers/auth.controller"));
  app.use("/log", require("./controllers/log.controller"));
  app.use("/stats", require("./controllers/stats.controller"));

  app.get("/", async (req, res) => {
    try {
      res.status(200).send("OK");
    } catch (error) {
      capture(error);
    }
  });

  app.get("/testsentry", async () => {
    try {
      throw new Error("Intentional error");
    } catch (error) {
      capture(error);
    }
  });

  registerSentryErrorHandler();

  app.listen(PORT, () => console.info("Listening on port " + PORT));
})();