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 { CheckPolicies } from '@gitroom/backend/services/auth/permissions/permissions.ability'; import { AutopostService } from '@gitroom/nestjs-libraries/database/prisma/autopost/autopost.service'; import { AutopostDto } from '@gitroom/nestjs-libraries/dtos/autopost/autopost.dto'; import { AuthorizationActions, Sections } from '@gitroom/backend/services/auth/permissions/permission.exception.class'; import { OnlyURL } from '@gitroom/nestjs-libraries/dtos/webhooks/webhooks.dto'; @ApiTags('Autopost') @Controller('/autopost') export class AutopostController { constructor(private _autopostsService: AutopostService) {} @Get('/') async getAutoposts(@GetOrgFromRequest() org: Organization) { return this._autopostsService.getAutoposts(org.id); } @Post('/') @CheckPolicies([AuthorizationActions.Create, Sections.WEBHOOKS]) async createAutopost( @GetOrgFromRequest() org: Organization, @Body() body: AutopostDto ) { return this._autopostsService.createAutopost(org.id, body); } @Put('/:id') async updateAutopost( @GetOrgFromRequest() org: Organization, @Body() body: AutopostDto, @Param('id') id: string ) { return this._autopostsService.createAutopost(org.id, body, id); } @Delete('/:id') async deleteAutopost( @GetOrgFromRequest() org: Organization, @Param('id') id: string ) { return this._autopostsService.deleteAutopost(org.id, id); } @Post('/:id/active') async changeActive( @GetOrgFromRequest() org: Organization, @Param('id') id: string, @Body('active') active: boolean ) { return this._autopostsService.changeActive(org.id, id, active); } @Post('/send') async sendWebhook(@Query() query: OnlyURL) { return this._autopostsService.loadXML(query.url); } }