teamdigitale/digital-citizenship-functions

View on GitHub
lib/openapi.ts

Summary

Maintainability
A
1 hr
Test Coverage
/**
 * Entrypoint for the Openapi handler
 */

import { Context } from "@azure/functions";

import * as express from "express";
import * as winston from "winston";

import { setAppContext } from "io-functions-commons/dist/src/utils/middlewares/context_middleware";

import { configureAzureContextTransport } from "io-functions-commons/dist/src/utils/logging";

import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler";

import { GetOpenapi } from "./controllers/openapi";

import { specs as adminApiSpecs } from "./api/admin_api";
import { specs as publicApiV1Specs } from "./api/public_api_v1";

// Whether we're in a production environment
const isProduction = process.env.NODE_ENV === "production";

// Setup Express

const app = express();

app.get("/specs/api/v1/swagger.json", GetOpenapi(publicApiV1Specs));
app.get("/specs/adm/swagger.json", GetOpenapi(adminApiSpecs));

const azureFunctionHandler = createAzureFunctionHandler(app);

// Binds the express app to an Azure Function handler
export function index(context: Context): void {
  const logLevel = isProduction ? "info" : "debug";
  configureAzureContextTransport(context, winston, logLevel);
  setAppContext(app, context);
  azureFunctionHandler(context);
}