export function bindRoutes()

in src/api/audits/routes.ts [41:87]


export function bindRoutes(router: Router, conn: DbConnectionType): void {
  logger.debug('attaching audit api routes...');

  router.post(
    '/v1/audits',
    async (
      req: RequestWithBody<TriggerAuditRequest>,
      res: Response<AuditBody>,
    ) => {
      const audit = await triggerAudit(conn, req.body.url, req.body.options);
      res.status(201).json(audit.body);
    },
  );

  router.get(
    '/v1/audits',
    async (req: Request, res: Response<ListResponse<AuditListItem>>) => {
      const response = await getAudits(conn, listOptionsFromQuery(req.query));
      res.json(response);
    },
  );

  router.get(
    '/v1/audits/:auditId',
    async (
      req: Request<{ auditId: string }>,
      res: Response<AuditBody | string>,
    ) => {
      const audit = await getAudit(conn, req.params.auditId);
      if (req.header('Accept') === 'application/json') {
        res.json(audit.body);
      } else {
        const html = ReportGenerator.generateReportHtml(audit.report);
        res.setHeader('Content-Type', 'text/html');
        res.send(html);
      }
    },
  );

  router.delete(
    '/v1/audits/:auditId',
    async (req: Request<{ auditId: string }>, res: Response<AuditBody>) => {
      const audit = await deleteAudit(conn, req.params.auditId);
      res.json(audit.body);
    },
  );
}