Skip to content

Commit

Permalink
add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
overthestream committed Jun 5, 2024
1 parent 6eb739b commit 6550b14
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 4 deletions.
52 changes: 52 additions & 0 deletions src/decorators/swagger/validation.decorator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { applyDecorators } from '@nestjs/common';
import {
ApiBadRequestResponse,
ApiOkResponse,
ApiOperation,
ApiParam,
} from '@nestjs/swagger';

export type ValidationEndpoints = 'purchaseValidation' | 'admobValidation';

export function ValidationDocs(endpoint: ValidationEndpoints) {
switch (endpoint) {
case 'purchaseValidation':
return applyDecorators(
ApiOperation({
summary: 'purchase validation',
}),
ApiParam({
name: 'productId',
description: '상품 Id',
required: true,
type: String,
}),
ApiParam({
name: 'token',
description: 'token',
required: true,
type: String,
}),
ApiOkResponse({
description: 'purchase validation success, 보상 지급',
}),
ApiBadRequestResponse({
description:
'purchase validation fail, 보상 미지급,구매 취소 / 대기중 / 이미 리워드 지급 / 에러',
}),
);
case 'admobValidation':
return applyDecorators(
ApiOperation({
summary: 'admob validation',
description: 'VSS callback url입니다.',
}),
ApiOkResponse({
description: 'admob validation success, 보상 지급',
}),
ApiBadRequestResponse({
description: 'admob validation fail',
}),
);
}
}
23 changes: 19 additions & 4 deletions src/domain/validation/validation.controller.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
import { Controller, Get } from '@nestjs/common';
import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Request } from 'express';
import { ValidationService } from './validation.service';
import { AccessGuard } from '../auth/guard/access.guard';
import { ValidationDocs } from 'src/decorators/swagger/validation.decorator';

@Controller('validation')
@ApiTags('validation')
export class ValidationController {
constructor() {}
constructor(private readonly validationService: ValidationService) {}

@Get('/purchase/:productId/:token')
async purchaseValidation() {
return 'purchaseValidation';
@UseGuards(AccessGuard)
@ValidationDocs('purchaseValidation')
async purchaseValidation(
@Param('productId') productId: string,
@Param('token') token: string,
) {
this.validationService.validatePurchase(productId, token);
}

@Get('/admob')
@ValidationDocs('admobValidation')
async admobValidation(@Req() req: Request) {
this.validationService.validateAdMob(req.url);
}
}

0 comments on commit 6550b14

Please sign in to comment.