mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-26 01:44:49 +00:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { Body, Controller, Inject, Param, Post, Req } from '@nestjs/common';
|
|
import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator';
|
|
import { RequestUser } from 'src/decorators/user.decorator';
|
|
import { MixpanelService } from './mixpanel.service';
|
|
import { extractUserFrom } from 'src/authentication/extract-user';
|
|
import DadosferaLogger from '@dadosfera/dadosfera-logs';
|
|
|
|
@ApiInternalOnlyController()
|
|
@Controller('trackEvent')
|
|
export class MixpanelController {
|
|
logger: DadosferaLogger;
|
|
|
|
constructor(
|
|
@Inject(DadosferaLogger)
|
|
dadosferaLogger: DadosferaLogger,
|
|
private mixpanelService: MixpanelService,
|
|
) {
|
|
this.logger = dadosferaLogger.logger;
|
|
}
|
|
|
|
@Post(':id')
|
|
async trackEvent(
|
|
@Param('id') id,
|
|
@Body() body,
|
|
@Req() request
|
|
) {
|
|
this.logger.info(`POST Track Event: ${id}`)
|
|
delete body.info;
|
|
|
|
const anonymousUser = {
|
|
username: "anonymous",
|
|
customer_name: "anonymous"
|
|
} as RequestUser
|
|
|
|
const hasToken = request.headers['authorization'];
|
|
|
|
const user = hasToken ? extractUserFrom(hasToken) : anonymousUser;
|
|
|
|
this.logger.info(`Has user: ${typeof hasToken == "string"}`)
|
|
|
|
await this.mixpanelService.track(id, user, request, body)
|
|
|
|
this.logger.info(`Event successful`)
|
|
return { id, body, user: user.username };
|
|
}
|
|
}
|