Skip to content

Commit ab061d8

Browse files
committed
refactor(web page reader): change plugin name, add request params schema to the OpenAPI doc
1 parent 9bdc1b5 commit ab061d8

File tree

5 files changed

+27
-19
lines changed

5 files changed

+27
-19
lines changed

src/api-docs/openAPIDocumentGenerator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { OpenApiGeneratorV3, OpenAPIRegistry } from '@asteasolutions/zod-to-openapi';
22

3-
import { articleReaderRegistry } from '@/routes/articleReader/articleReaderRouter';
43
import { healthCheckRegistry } from '@/routes/healthCheck/healthCheckRouter';
54
import { powerpointGeneratorRegistry } from '@/routes/powerpointGenerator/powerpointGeneratorRouter';
5+
import { articleReaderRegistry } from '@/routes/webPageReader/webPageReaderRouter';
66
import { wordGeneratorRegistry } from '@/routes/wordGenerator/wordGeneratorRouter';
77
import { transcriptRegistry } from '@/routes/youtubeTranscript/transcriptRouter';
88

src/routes/articleReader/articleReaderModel.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';
2+
import { z } from 'zod';
3+
4+
extendZodWithOpenApi(z);
5+
6+
export type WebPageReaderResponse = z.infer<typeof WebPageReaderResponseSchema>;
7+
export const WebPageReaderResponseSchema = z.object({
8+
title: z.string(),
9+
content: z.string(),
10+
});
11+
12+
export type WebPageReaderRequestParam = z.infer<typeof WebPageReaderRequestParamSchema>;
13+
export const WebPageReaderRequestParamSchema = z.object({
14+
url: z.string().describe('The URL of the web page to retrieve content from'),
15+
});

src/routes/articleReader/articleReaderRouter.ts renamed to src/routes/webPageReader/webPageReaderRouter.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import { createApiResponse } from '@/api-docs/openAPIResponseBuilders';
1010
import { ResponseStatus, ServiceResponse } from '@/common/models/serviceResponse';
1111
import { handleServiceResponse } from '@/common/utils/httpHandlers';
1212

13-
import { ArticleReaderSchema } from './articleReaderModel';
13+
import { WebPageReaderRequestParamSchema, WebPageReaderResponseSchema } from './webPageReaderModel';
1414

1515
export const articleReaderRegistry = new OpenAPIRegistry();
16-
articleReaderRegistry.register('ArticleReader', ArticleReaderSchema);
16+
articleReaderRegistry.register('Web Page Reader', WebPageReaderResponseSchema);
1717

1818
const removeUnwantedElements = (_cheerio: any) => {
1919
const elementsToRemove = [
@@ -59,14 +59,17 @@ const fetchAndCleanContent = async (url: string) => {
5959
return { title, content: article ? article.textContent : '' };
6060
};
6161

62-
export const articleReaderRouter: Router = (() => {
62+
export const webPageReaderRouter: Router = (() => {
6363
const router = express.Router();
6464

6565
articleReaderRegistry.registerPath({
6666
method: 'get',
67-
path: '/content',
68-
tags: ['Article Reader'],
69-
responses: createApiResponse(ArticleReaderSchema, 'Success'),
67+
path: '/web-page-reader/get-content',
68+
tags: ['Web Page Reader'],
69+
request: {
70+
params: WebPageReaderRequestParamSchema,
71+
},
72+
responses: createApiResponse(WebPageReaderResponseSchema, 'Success'),
7073
});
7174

7275
router.get('/', async (_req: Request, res: Response) => {

src/server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import rateLimiter from '@/common/middleware/rateLimiter';
1010
import requestLogger from '@/common/middleware/requestLogger';
1111
import { healthCheckRouter } from '@/routes/healthCheck/healthCheckRouter';
1212

13-
import { articleReaderRouter } from './routes/articleReader/articleReaderRouter';
1413
import { powerpointGeneratorRouter } from './routes/powerpointGenerator/powerpointGeneratorRouter';
14+
import { webPageReaderRouter } from './routes/webPageReader/webPageReaderRouter';
1515
import { wordGeneratorRouter } from './routes/wordGenerator/wordGeneratorRouter';
1616
import { transcriptRouter } from './routes/youtubeTranscript/transcriptRouter';
1717
const logger = pino({ name: 'server start' });
@@ -37,7 +37,7 @@ app.use(requestLogger());
3737
app.use('/health-check', healthCheckRouter);
3838
app.use('/images', express.static('public/images'));
3939
app.use('/transcript', transcriptRouter);
40-
app.use('/get-content', articleReaderRouter);
40+
app.use('/web-page-reader', webPageReaderRouter);
4141
app.use('/powerpoint-generator', powerpointGeneratorRouter);
4242
app.use('/word-generator', wordGeneratorRouter);
4343
// Swagger UI

0 commit comments

Comments
 (0)