Files
oneuptime/TestServer/API/Main.ts
Simon Larsen 61e590e161 fix settings
2023-05-14 21:13:51 +01:00

56 lines
1.8 KiB
TypeScript

import LocalCache from 'CommonServer/Infrastructure/LocalCache';
import Express, {
ExpressRequest,
ExpressResponse,
ExpressRouter,
NextFunction,
} from 'CommonServer/Utils/Express';
import Response from 'CommonServer/Utils/Response';
import Sleep from 'Common/Types/Sleep';
import Typeof from 'Common/Types/Typeof';
import { JSONValue } from 'Common/Types/JSON';
const router: ExpressRouter = Express.getRouter();
router.get(
'/',
async (
req: ExpressRequest,
res: ExpressResponse,
next: NextFunction
): Promise<void> => {
try {
const responseCode: number | undefined =
LocalCache.getNumber('TestServer', 'responseCode') || 200;
const responseTime: number | undefined =
LocalCache.getNumber('TestServer', 'responseTime') || 0;
const responseBody: string | undefined =
LocalCache.getString('TestServer', 'responseBody') || '';
let responseHeaders: JSONValue | undefined =
LocalCache.getJSON('TestServer', 'responseHeaders') || {};
if (responseHeaders && typeof responseHeaders === Typeof.String) {
responseHeaders = JSON.parse(responseHeaders.toString());
}
if (responseTime > 0) {
await Sleep.sleep(responseTime);
}
// middleware marks the probe as alive.
// so we dont need to do anything here.
return Response.sendCustomResponse(
req,
res,
responseCode,
responseBody,
responseHeaders ? (responseHeaders as any) : {}
);
} catch (err) {
return next(err);
}
}
);
export default router;