| import { |
| Body, |
| Controller, |
| Delete, |
| Get, |
| Param, |
| Post, |
| Put, |
| Query, |
| } from '@nestjs/common'; |
| import { GetOrgFromRequest } from '@gitroom/nestjs-libraries/user/org.from.request'; |
| import { Organization } from '@prisma/client'; |
| import { ApiTags } from '@nestjs/swagger'; |
| import { WebhooksService } from '@gitroom/nestjs-libraries/database/prisma/webhooks/webhooks.service'; |
| import { CheckPolicies } from '@gitroom/backend/services/auth/permissions/permissions.ability'; |
| import { |
| OnlyURL, UpdateDto, WebhooksDto |
| } from '@gitroom/nestjs-libraries/dtos/webhooks/webhooks.dto'; |
| import { AuthorizationActions, Sections } from '@gitroom/backend/services/auth/permissions/permission.exception.class'; |
|
|
| @ApiTags('Webhooks') |
| @Controller('/webhooks') |
| export class WebhookController { |
| constructor(private _webhooksService: WebhooksService) {} |
|
|
| @Get('/') |
| async getStatistics(@GetOrgFromRequest() org: Organization) { |
| return this._webhooksService.getWebhooks(org.id); |
| } |
|
|
| @Post('/') |
| @CheckPolicies([AuthorizationActions.Create, Sections.WEBHOOKS]) |
| async createAWebhook( |
| @GetOrgFromRequest() org: Organization, |
| @Body() body: WebhooksDto |
| ) { |
| return this._webhooksService.createWebhook(org.id, body); |
| } |
|
|
| @Put('/') |
| async updateWebhook( |
| @GetOrgFromRequest() org: Organization, |
| @Body() body: UpdateDto |
| ) { |
| return this._webhooksService.createWebhook(org.id, body); |
| } |
|
|
| @Delete('/:id') |
| async deleteWebhook( |
| @GetOrgFromRequest() org: Organization, |
| @Param('id') id: string |
| ) { |
| return this._webhooksService.deleteWebhook(org.id, id); |
| } |
|
|
| @Post('/send') |
| async sendWebhook(@Body() body: any, @Query() query: OnlyURL) { |
| try { |
| await fetch(query.url, { |
| method: 'POST', |
| body: JSON.stringify(body), |
| headers: { 'Content-Type': 'application/json' }, |
| }); |
| } catch (err) { |
| |
| } |
|
|
| return { send: true }; |
| } |
| } |
|
|