import { Controller, Get, Headers, Param, Req, Res, } from '@nestjs/common'; import type { Request, Response } from 'express'; import { TrackingService } from './tracking.service'; /** * ریدایرکت عمومی بدون احراز هویت. * مسیر نهایی: GET /api/t/:token */ @Controller('t') export class PublicTrackingController { constructor(private readonly tracking: TrackingService) {} @Get(':token') async redirect( @Param('token') token: string, @Headers('user-agent') userAgent: string | undefined, @Headers('referer') referer: string | undefined, @Req() req: Request, @Res() res: Response, ) { const ip = (typeof req.headers['x-forwarded-for'] === 'string' ? req.headers['x-forwarded-for'].split(',')[0]?.trim() : undefined) || req.ip || undefined; const target = await this.tracking.handleClick(token, { userAgent, referer, ip, }); return res.redirect(302, target); } }