first commit v3 initialiazed a temporary repository for darmanet client

This commit is contained in:
2026-09-08 16:04:01 +03:30
commit 5c7fd95052
216 changed files with 30050 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
import { Controller, Get, Query, Header, BadRequestException, Req, Res } from '@nestjs/common';
import { Public } from 'src/auth/auth.decorator';
import { WidgetService } from './widget.service';
@Controller('widget')
@Public()
export class WidgetController {
constructor(private readonly widgetService: WidgetService) { }
@Get('script')
@Header('Content-Type', 'application/javascript')
@Header('Access-Control-Allow-Origin', 'https://staging.hdmplus.ir/, https://si24.ir')
@Header('X-Frame-Options', 'ALLOW-FROM https://staging.hdmplus.ir/ https://si24.ir')
@Header(
'Content-Security-Policy',
"frame-ancestors 'self' https://staging.hdmplus.ir/ https://si24.ir",
)
@Header('X-Content-Type-Options', 'nosniff')
getWidgetScript(
@Query('apiKey') apiKey: string,
@Req() req: Request,
): string {
if (!apiKey) {
throw new BadRequestException('API key is required');
}
const isValidApiKey =
Buffer.from(apiKey).length === Buffer.from('si24samanwebsite').length &&
Buffer.from(apiKey).compare(Buffer.from('si24samanwebsite')) === 0;
if (!isValidApiKey) {
throw new BadRequestException('Invalid API key');
}
return this.widgetService.generateWidgetScript();
}
@Get('iframe')
async getIframeScript(
@Query('apiKey') apiKey: string,
@Req() req: Request,
@Res() res,
) {
if (!apiKey || apiKey !== 'si24samanwebsite') {
throw new BadRequestException('API key is invalid or missing');
}
res.set({
'Content-Type': 'application/javascript',
'Access-Control-Allow-Origin': 'https://staging.hdmplus.ir/, https://si24.ir',
'X-Frame-Options': 'ALLOW-FROM https://staging.hdmplus.ir/ https://si24.ir',
'Content-Security-Policy': "frame-ancestors 'self' https://staging.hdmplus.ir/ https://si24.ir",
'X-Content-Type-Options': 'nosniff',
});
const script = this.widgetService.generateWidgetScriptWithoutStyle();
return res.send(script);
}
}