Skip to content

Commit 85f657f

Browse files
authored
Merge pull request #67 from TypingMind/refactor-youtube-transcript
refactor(youtube transcript): Refactor OpenAPI document for Youtube Transcript
2 parents cb31ced + f82a408 commit 85f657f

File tree

6 files changed

+31
-23
lines changed

6 files changed

+31
-23
lines changed

src/api-docs/openAPIDocumentGenerator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import { healthCheckRegistry } from '@/routes/healthCheck/healthCheckRouter';
44
import { powerpointGeneratorRegistry } from '@/routes/powerpointGenerator/powerpointGeneratorRouter';
55
import { articleReaderRegistry } from '@/routes/webPageReader/webPageReaderRouter';
66
import { wordGeneratorRegistry } from '@/routes/wordGenerator/wordGeneratorRouter';
7-
import { transcriptRegistry } from '@/routes/youtubeTranscript/transcriptRouter';
7+
import { youtubeTranscriptRegistry } from '@/routes/youtubeTranscript/youtubeTranscriptRouter';
88

99
export function generateOpenAPIDocument() {
1010
const registry = new OpenAPIRegistry([
1111
healthCheckRegistry,
12-
transcriptRegistry,
12+
youtubeTranscriptRegistry,
1313
articleReaderRegistry,
1414
powerpointGeneratorRegistry,
1515
wordGeneratorRegistry,

src/routes/webPageReader/webPageReaderRouter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ export const webPageReaderRouter: Router = (() => {
6767
path: '/web-page-reader/get-content',
6868
tags: ['Web Page Reader'],
6969
request: {
70-
params: WebPageReaderRequestParamSchema,
70+
query: WebPageReaderRequestParamSchema,
7171
},
7272
responses: createApiResponse(WebPageReaderResponseSchema, 'Success'),
7373
});
7474

75-
router.get('/', async (_req: Request, res: Response) => {
75+
router.get('/get-content', async (_req: Request, res: Response) => {
7676
const { url } = _req.query;
7777

7878
if (typeof url !== 'string') {

src/routes/youtubeTranscript/transcriptModel.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';
2+
import { z } from 'zod';
3+
4+
extendZodWithOpenApi(z);
5+
6+
export type YoutubeTranscriptResponse = z.infer<typeof YoutubeTranscriptResponseSchema>;
7+
export const YoutubeTranscriptResponseSchema = z.object({
8+
textOnly: z.string(),
9+
});
10+
11+
export type YoutubeTranscriptRequestParam = z.infer<typeof YoutubeTranscriptRequestParamSchema>;
12+
export const YoutubeTranscriptRequestParamSchema = z.object({
13+
videoId: z.string().describe('The id of the Youtube video to retrieve the transcript'),
14+
});

src/routes/youtubeTranscript/transcriptRouter.ts renamed to src/routes/youtubeTranscript/youtubeTranscriptRouter.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,25 @@ import { createApiResponse } from '@/api-docs/openAPIResponseBuilders';
77
import { ResponseStatus, ServiceResponse } from '@/common/models/serviceResponse';
88
import { handleServiceResponse } from '@/common/utils/httpHandlers';
99

10-
import { TranscriptSchema } from './transcriptModel';
10+
import { YoutubeTranscriptRequestParamSchema, YoutubeTranscriptResponseSchema } from './youtubeTranscriptModel';
1111

12-
export const transcriptRegistry = new OpenAPIRegistry();
13-
transcriptRegistry.register('Transcript', TranscriptSchema);
12+
export const youtubeTranscriptRegistry = new OpenAPIRegistry();
13+
youtubeTranscriptRegistry.register('YoutubeTranscript', YoutubeTranscriptResponseSchema);
1414

15-
export const transcriptRouter: Router = (() => {
15+
export const youtubeTranscriptRouter: Router = (() => {
1616
const router = express.Router();
1717

18-
transcriptRegistry.registerPath({
18+
youtubeTranscriptRegistry.registerPath({
1919
method: 'get',
20-
path: '/transcript',
20+
path: '/youtube-transcript/get-transcript',
2121
tags: ['Youtube Transcript'],
22-
responses: createApiResponse(TranscriptSchema, 'Success'),
22+
request: {
23+
query: YoutubeTranscriptRequestParamSchema,
24+
},
25+
responses: createApiResponse(YoutubeTranscriptResponseSchema, 'Success'),
2326
});
2427

25-
router.get('/', async (_req: Request, res: Response) => {
28+
router.get('/get-transcript', async (_req: Request, res: Response) => {
2629
const { videoId } = _req.query;
2730

2831
if (!videoId) {

src/server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { healthCheckRouter } from '@/routes/healthCheck/healthCheckRouter';
1313
import { powerpointGeneratorRouter } from './routes/powerpointGenerator/powerpointGeneratorRouter';
1414
import { webPageReaderRouter } from './routes/webPageReader/webPageReaderRouter';
1515
import { wordGeneratorRouter } from './routes/wordGenerator/wordGeneratorRouter';
16-
import { transcriptRouter } from './routes/youtubeTranscript/transcriptRouter';
16+
import { youtubeTranscriptRouter } from './routes/youtubeTranscript/youtubeTranscriptRouter';
1717
const logger = pino({ name: 'server start' });
1818
const app: Express = express();
1919

@@ -36,7 +36,7 @@ app.use(requestLogger());
3636
// Routes
3737
app.use('/health-check', healthCheckRouter);
3838
app.use('/images', express.static('public/images'));
39-
app.use('/transcript', transcriptRouter);
39+
app.use('/youtube-transcript', youtubeTranscriptRouter);
4040
app.use('/web-page-reader', webPageReaderRouter);
4141
app.use('/powerpoint-generator', powerpointGeneratorRouter);
4242
app.use('/word-generator', wordGeneratorRouter);

0 commit comments

Comments
 (0)