import { Body, Controller, Post, Get, HttpCode, HttpStatus, Inject, Headers, UseFilters, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { TermsOfUseAcceptRequest } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages'; import { TermsOfUseClientService } from './termsOfUse.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.filter'; import { RequestUser, User } from '../../authentication/user.decorator'; import { Metadata } from '@grpc/grpc-js'; @ApiTags('TermsOfUse') @UseFilters(new GrpcToHttpExceptionFilter()) @Controller('terms-of-use') export class TermsOfUseController { logger: DadosferaLogger; constructor( @Inject(DadosferaLogger) dadosferaLogger: DadosferaLogger, private termsOfUseClient: TermsOfUseClientService, ) { this.logger = dadosferaLogger.logger; } @Get('token') async getToken( @User({ required: true }) user: RequestUser, @Headers('Dadosfera-Lang') language: string, ) { this.logger.info('/terms-of-use - get token'); const metadata = new Metadata(); metadata.add('language', language || 'pt-br'); return this.termsOfUseClient.getToken({ userId: user.user_id }, metadata); } @Post('accept') @HttpCode(HttpStatus.OK) async accept(@Body() body: TermsOfUseAcceptRequest, @Headers() headers) { this.logger.info('/terms-of-use - accept'); const { token } = body; const fingerprint = { ip: process.env.ENV !== 'local' ? headers['x-forwarded-for'] : '0.0.0.0', port: process.env.ENV !== 'local' ? headers['x-forwarded-port'] : '00000', userAgent: headers['user-agent'], }; return this.termsOfUseClient.accept({ token, fingerprint }); } }