feat: remediate HTTP API reliability and developer documentation
CSS quality / css-quality (push) Has been cancelled
CSS quality / css-quality (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { Controller, Get, Header, Query, Res } from '@nestjs/common';
|
||||
import { httpDocVersion, readHttpGuide, renderHttpGuide } from './docs/reader';
|
||||
|
||||
@Controller('client-docs')
|
||||
export class OpenApiDocsController {
|
||||
@Get()
|
||||
@Header('Cache-Control', 'no-cache')
|
||||
getGuide(
|
||||
@Query('format') format: string | undefined,
|
||||
@Res()
|
||||
response: {
|
||||
type: (value: string) => void;
|
||||
setHeader: (name: string, value: string) => void;
|
||||
send: (value: string) => void;
|
||||
},
|
||||
) {
|
||||
const markdown = readHttpGuide();
|
||||
response.setHeader('X-Document-Version', httpDocVersion(markdown));
|
||||
response.setHeader('X-Content-Type-Options', 'nosniff');
|
||||
if (format === 'md') {
|
||||
response.type('text/markdown; charset=utf-8');
|
||||
response.setHeader('Content-Disposition', 'attachment; filename="client-http-api-guide.md"');
|
||||
response.send(markdown);
|
||||
return;
|
||||
}
|
||||
response.type('text/html; charset=utf-8');
|
||||
response.setHeader(
|
||||
'Content-Security-Policy',
|
||||
"default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; connect-src 'none'; img-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self'",
|
||||
);
|
||||
response.send(renderHttpGuide(markdown, process.env.HTTP_API_PUBLIC_ORIGIN?.replace(/\/+$/, '') ?? ''));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user