返回 AiToEarn
openai.controller.ts
根目录 / project / aitoearn-backend / apps / aitoearn-ai / src / core / ai / video / openai / openai.controller.ts
1 import { Body, Controller, Get, Param, Post } from '@nestjs/common'
2 import { ApiTags } from '@nestjs/swagger'
3 import { GetToken, TokenInfo } from '@yikart/aitoearn-auth'
4 import { ApiDoc, ParseObjectIdPipe, UserType } from '@yikart/common'
5 import { OpenAIVideoCreateRequestDto, OpenAIVideoRemixRequestDto } from './openai.dto'
6 import { OpenAIVideoService } from './openai.service'
7 import { OpenAIVideoResponseVo } from './openai.vo'
8
9 @ApiTags('Me/Ai/Video/OpenAI')
10 @Controller('ai/openai')
11 export class OpenAIVideoController {
12 constructor(private readonly openaiVideoService: OpenAIVideoService) {}
13
14 @ApiDoc({
15 summary: 'Create OpenAI Video',
16 body: OpenAIVideoCreateRequestDto.schema,
17 response: OpenAIVideoResponseVo,
18 })
19 @Post('/videos')
20 async createVideo(
21 @GetToken() token: TokenInfo,
22 @Body() body: OpenAIVideoCreateRequestDto,
23 ): Promise<OpenAIVideoResponseVo> {
24 const response = await this.openaiVideoService.createVideo({
25 ...body,
26 userId: token.id,
27 userType: UserType.User,
28 })
29 return OpenAIVideoResponseVo.create(response)
30 }
31
32 @ApiDoc({
33 summary: 'Get OpenAI Video Status',
34 response: OpenAIVideoResponseVo,
35 })
36 @Get('/videos/:videoId')
37 async getVideoStatus(
38 @GetToken() token: TokenInfo,
39 @Param('videoId', ParseObjectIdPipe) videoId: string,
40 ): Promise<OpenAIVideoResponseVo> {
41 const response = await this.openaiVideoService.getVideo(token.id, UserType.User, videoId)
42 return OpenAIVideoResponseVo.create(response)
43 }
44
45 @ApiDoc({
46 summary: 'Remix OpenAI Video',
47 body: OpenAIVideoRemixRequestDto.schema,
48 response: OpenAIVideoResponseVo,
49 })
50 @Post('/videos/:videoId/remix')
51 async remixVideo(
52 @GetToken() token: TokenInfo,
53 @Param('videoId', ParseObjectIdPipe) videoId: string,
54 @Body() body: OpenAIVideoRemixRequestDto,
55 ): Promise<OpenAIVideoResponseVo> {
56 const response = await this.openaiVideoService.remixVideo({
57 ...body,
58 videoId,
59 userId: token.id,
60 userType: UserType.User,
61 })
62 return OpenAIVideoResponseVo.create(response)
63 }
64 }
65
65 lines TYPESCRIPT