diff options
| author | おさむのひと <46447427+samunohito@users.noreply.github.com> | 2024-09-19 17:20:50 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-19 17:20:50 +0900 |
| commit | 4ac8aad50a1a1ef2ac2a13a04baca445294397ed (patch) | |
| tree | 37a81a7ca6a760dc0be88b61f409c4d24354d3ca /packages/backend/src/server/api/endpoints/admin | |
| parent | fix(frontend): viteの一時ファイルがgitの変更に含まれないよ... (diff) | |
| download | sharkey-4ac8aad50a1a1ef2ac2a13a04baca445294397ed.tar.gz sharkey-4ac8aad50a1a1ef2ac2a13a04baca445294397ed.tar.bz2 sharkey-4ac8aad50a1a1ef2ac2a13a04baca445294397ed.zip | |
feat: UserWebhook/SystemWebhookのテスト送信機能を追加 (#14489)
* feat: UserWebhook/SystemWebhookのテスト送信機能を追加
* fix CHANGELOG.md
* 一部設定をパラメータから上書き出来るように修正
* remove async
* regenerate autogen
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/admin/system-webhook/test.ts | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/system-webhook/test.ts b/packages/backend/src/server/api/endpoints/admin/system-webhook/test.ts new file mode 100644 index 0000000000..fb2ddf4b44 --- /dev/null +++ b/packages/backend/src/server/api/endpoints/admin/system-webhook/test.ts @@ -0,0 +1,77 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Injectable } from '@nestjs/common'; +import ms from 'ms'; +import { Endpoint } from '@/server/api/endpoint-base.js'; +import { WebhookTestService } from '@/core/WebhookTestService.js'; +import { ApiError } from '@/server/api/error.js'; +import { systemWebhookEventTypes } from '@/models/SystemWebhook.js'; + +export const meta = { + tags: ['webhooks'], + + requireCredential: true, + requireModerator: true, + secure: true, + kind: 'read:admin:system-webhook', + + limit: { + duration: ms('15min'), + max: 60, + }, + + errors: { + noSuchWebhook: { + message: 'No such webhook.', + code: 'NO_SUCH_WEBHOOK', + id: '0c52149c-e913-18f8-5dc7-74870bfe0cf9', + }, + }, +} as const; + +export const paramDef = { + type: 'object', + properties: { + webhookId: { + type: 'string', + format: 'misskey:id', + }, + type: { + type: 'string', + enum: systemWebhookEventTypes, + }, + override: { + type: 'object', + properties: { + url: { type: 'string', nullable: false }, + secret: { type: 'string', nullable: false }, + }, + }, + }, + required: ['webhookId', 'type'], +} as const; + +@Injectable() +export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export + constructor( + private webhookTestService: WebhookTestService, + ) { + super(meta, paramDef, async (ps) => { + try { + await this.webhookTestService.testSystemWebhook({ + webhookId: ps.webhookId, + type: ps.type, + override: ps.override, + }); + } catch (e) { + if (e instanceof WebhookTestService.NoSuchWebhookError) { + throw new ApiError(meta.errors.noSuchWebhook); + } + throw e; + } + }); + } +} |