Files
devops-platform-api/src/webhooks/gitea/gitea-webhook.controller.ts
T
2026-06-11 20:49:59 +08:00

41 lines
1.1 KiB
TypeScript

import {
Body,
Controller,
Headers,
Post,
RawBody,
} from '@nestjs/common';
import { ApiCreatedResponse, ApiTags } from '@nestjs/swagger';
import { GiteaWebhookHeaders, GiteaWebhookResult } from './gitea-webhook.types';
import { GiteaWebhookService } from './gitea-webhook.service';
@ApiTags('webhooks')
@Controller('webhooks/gitea')
export class GiteaWebhookController {
constructor(private readonly giteaWebhookService: GiteaWebhookService) {}
@Post()
@ApiCreatedResponse({ description: 'Receive a Gitea webhook event.' })
async receiveWebhook(
@Headers('x-gitea-event') event: string | undefined,
@Headers('x-gitea-delivery') delivery: string | undefined,
@Headers('x-gitea-signature') signature: string | undefined,
@Headers('x-hub-signature-256') hubSignature256: string | undefined,
@Body() payload: unknown,
@RawBody() rawBody?: Buffer,
): Promise<GiteaWebhookResult> {
const headers: GiteaWebhookHeaders = {
event,
delivery,
signature,
hubSignature256,
};
return this.giteaWebhookService.handleWebhook({
headers,
payload,
rawBody,
});
}
}