57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
import { Request, Response } from 'express';
|
|
import { requireLogin } from '../middleware/auth';
|
|
import { logger } from '../services/logging/logger';
|
|
|
|
// GET /welcome
|
|
router.get('/welcome', [requireLogin], async (req: Request, res: Response) => {
|
|
const t0 = performance.now(); // optional profiling start
|
|
|
|
try {
|
|
const response = await fetch(`${process.env.DOC_HOST}/api/pages/717`, {
|
|
headers: {
|
|
Authorization: `Token ${process.env.DOC_TOKEN_ID}:${process.env.DOC_TOKEN_SECRET}`,
|
|
},
|
|
});
|
|
|
|
if (!response.ok) {
|
|
const text = await response.text();
|
|
logger.error('app', 'Failed to fetch welcome page from Bookstack', {
|
|
status: response.status,
|
|
statusText: response.statusText,
|
|
body: text,
|
|
userId: req.user?.id,
|
|
});
|
|
return res.sendStatus(500);
|
|
}
|
|
|
|
const out = await response.json();
|
|
res.status(200).json(out.html);
|
|
|
|
// optional profiling log
|
|
const duration = performance.now() - t0;
|
|
logger.info(
|
|
'profiling',
|
|
'GET /welcome completed',
|
|
{
|
|
userId: req.user?.id,
|
|
total_ms: duration,
|
|
},
|
|
'profiling'
|
|
);
|
|
|
|
} catch (error) {
|
|
logger.error('app', 'Error fetching welcome page from Bookstack', {
|
|
error: error instanceof Error ? error.message : String(error),
|
|
stack: error instanceof Error ? error.stack : undefined,
|
|
userId: req.user?.id,
|
|
});
|
|
res.sendStatus(500);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
export const docsRouter = router; |