summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/i/webhooks
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 03:27:08 +0900
committerGitHub <noreply@github.com>2022-09-18 03:27:08 +0900
commitb75184ec8e3436200bacdcd832e3324702553d20 (patch)
tree8b7e316f29e95df921db57289c8b8da476d18f07 /packages/backend/src/server/api/endpoints/i/webhooks
parentUpdate ROADMAP.md (diff)
downloadmisskey-b75184ec8e3436200bacdcd832e3324702553d20.tar.gz
misskey-b75184ec8e3436200bacdcd832e3324702553d20.tar.bz2
misskey-b75184ec8e3436200bacdcd832e3324702553d20.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'packages/backend/src/server/api/endpoints/i/webhooks')
-rw-r--r--packages/backend/src/server/api/endpoints/i/webhooks/create.ts51
-rw-r--r--packages/backend/src/server/api/endpoints/i/webhooks/delete.ts42
-rw-r--r--packages/backend/src/server/api/endpoints/i/webhooks/list.ts26
-rw-r--r--packages/backend/src/server/api/endpoints/i/webhooks/show.ts34
-rw-r--r--packages/backend/src/server/api/endpoints/i/webhooks/update.ts56
5 files changed, 136 insertions, 73 deletions
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts
index 2e2fd00b8c..016b1b5d6a 100644
--- a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts
+++ b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts
@@ -1,8 +1,10 @@
-import define from '../../../define.js';
-import { genId } from '@/misc/gen-id.js';
-import { Webhooks } from '@/models/index.js';
-import { publishInternalEvent } from '@/services/stream.js';
-import { webhookEventTypes } from '@/models/entities/webhook.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { IdService } from '@/core/IdService.js';
+import { WebhooksRepository } from '@/models/index.js';
+import { webhookEventTypes } from '@/models/entities/Webhook.js';
+import { GlobalEventService } from '@/core/GlobalEventService.js';
+import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['webhooks'],
@@ -25,19 +27,32 @@ export const paramDef = {
required: ['name', 'url', 'secret', 'on'],
} as const;
+// TODO: ロジックをサービスに切り出す
+
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- const webhook = await Webhooks.insert({
- id: genId(),
- createdAt: new Date(),
- userId: user.id,
- name: ps.name,
- url: ps.url,
- secret: ps.secret,
- on: ps.on,
- }).then(x => Webhooks.findOneByOrFail(x.identifiers[0]));
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.webhooksRepository)
+ private webhooksRepository: WebhooksRepository,
+
+ private idService: IdService,
+ private globalEventService: GlobalEventService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const webhook = await this.webhooksRepository.insert({
+ id: this.idService.genId(),
+ createdAt: new Date(),
+ userId: me.id,
+ name: ps.name,
+ url: ps.url,
+ secret: ps.secret,
+ on: ps.on,
+ }).then(x => this.webhooksRepository.findOneByOrFail(x.identifiers[0]));
- publishInternalEvent('webhookCreated', webhook);
+ this.globalEventService.publishInternalEvent('webhookCreated', webhook);
- return webhook;
-});
+ return webhook;
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts b/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts
index 2821eaa5f1..53b553b43e 100644
--- a/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts
+++ b/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts
@@ -1,7 +1,9 @@
-import define from '../../../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { WebhooksRepository } from '@/models/index.js';
+import { GlobalEventService } from '@/core/GlobalEventService.js';
+import { DI } from '@/di-symbols.js';
import { ApiError } from '../../../error.js';
-import { Webhooks } from '@/models/index.js';
-import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['webhooks'],
@@ -27,18 +29,30 @@ export const paramDef = {
required: ['webhookId'],
} as const;
+// TODO: ロジックをサービスに切り出す
+
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- const webhook = await Webhooks.findOneBy({
- id: ps.webhookId,
- userId: user.id,
- });
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.webhooksRepository)
+ private webhooksRepository: WebhooksRepository,
- if (webhook == null) {
- throw new ApiError(meta.errors.noSuchWebhook);
- }
+ private globalEventService: GlobalEventService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const webhook = await this.webhooksRepository.findOneBy({
+ id: ps.webhookId,
+ userId: me.id,
+ });
- await Webhooks.delete(webhook.id);
+ if (webhook == null) {
+ throw new ApiError(meta.errors.noSuchWebhook);
+ }
- publishInternalEvent('webhookDeleted', webhook);
-});
+ await this.webhooksRepository.delete(webhook.id);
+
+ this.globalEventService.publishInternalEvent('webhookDeleted', webhook);
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/list.ts b/packages/backend/src/server/api/endpoints/i/webhooks/list.ts
index 54e4563732..8e4aff45dd 100644
--- a/packages/backend/src/server/api/endpoints/i/webhooks/list.ts
+++ b/packages/backend/src/server/api/endpoints/i/webhooks/list.ts
@@ -1,5 +1,7 @@
-import define from '../../../define.js';
-import { Webhooks } from '@/models/index.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { WebhooksRepository } from '@/models/index.js';
+import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['webhooks', 'account'],
@@ -16,10 +18,18 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, me) => {
- const webhooks = await Webhooks.findBy({
- userId: me.id,
- });
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.webhooksRepository)
+ private webhooksRepository: WebhooksRepository,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const webhooks = await this.webhooksRepository.findBy({
+ userId: me.id,
+ });
- return webhooks;
-});
+ return webhooks;
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/show.ts b/packages/backend/src/server/api/endpoints/i/webhooks/show.ts
index 02fa1edb5e..622c2ade98 100644
--- a/packages/backend/src/server/api/endpoints/i/webhooks/show.ts
+++ b/packages/backend/src/server/api/endpoints/i/webhooks/show.ts
@@ -1,6 +1,8 @@
-import define from '../../../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { WebhooksRepository } from '@/models/index.js';
+import { DI } from '@/di-symbols.js';
import { ApiError } from '../../../error.js';
-import { Webhooks } from '@/models/index.js';
export const meta = {
tags: ['webhooks'],
@@ -27,15 +29,23 @@ export const paramDef = {
} as const;
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- const webhook = await Webhooks.findOneBy({
- id: ps.webhookId,
- userId: user.id,
- });
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.webhooksRepository)
+ private webhooksRepository: WebhooksRepository,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const webhook = await this.webhooksRepository.findOneBy({
+ id: ps.webhookId,
+ userId: me.id,
+ });
- if (webhook == null) {
- throw new ApiError(meta.errors.noSuchWebhook);
- }
+ if (webhook == null) {
+ throw new ApiError(meta.errors.noSuchWebhook);
+ }
- return webhook;
-});
+ return webhook;
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/update.ts b/packages/backend/src/server/api/endpoints/i/webhooks/update.ts
index f87b9753fb..3a0ef1a526 100644
--- a/packages/backend/src/server/api/endpoints/i/webhooks/update.ts
+++ b/packages/backend/src/server/api/endpoints/i/webhooks/update.ts
@@ -1,8 +1,10 @@
-import define from '../../../define.js';
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { WebhooksRepository } from '@/models/index.js';
+import { webhookEventTypes } from '@/models/entities/Webhook.js';
+import { GlobalEventService } from '@/core/GlobalEventService.js';
+import { DI } from '@/di-symbols.js';
import { ApiError } from '../../../error.js';
-import { Webhooks } from '@/models/index.js';
-import { publishInternalEvent } from '@/services/stream.js';
-import { webhookEventTypes } from '@/models/entities/webhook.js';
export const meta = {
tags: ['webhooks'],
@@ -36,24 +38,36 @@ export const paramDef = {
required: ['webhookId', 'name', 'url', 'secret', 'on', 'active'],
} as const;
+// TODO: ロジックをサービスに切り出す
+
// eslint-disable-next-line import/no-default-export
-export default define(meta, paramDef, async (ps, user) => {
- const webhook = await Webhooks.findOneBy({
- id: ps.webhookId,
- userId: user.id,
- });
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> {
+ constructor(
+ @Inject(DI.webhooksRepository)
+ private webhooksRepository: WebhooksRepository,
- if (webhook == null) {
- throw new ApiError(meta.errors.noSuchWebhook);
- }
+ private globalEventService: GlobalEventService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const webhook = await this.webhooksRepository.findOneBy({
+ id: ps.webhookId,
+ userId: me.id,
+ });
- await Webhooks.update(webhook.id, {
- name: ps.name,
- url: ps.url,
- secret: ps.secret,
- on: ps.on,
- active: ps.active,
- });
+ if (webhook == null) {
+ throw new ApiError(meta.errors.noSuchWebhook);
+ }
- publishInternalEvent('webhookUpdated', webhook);
-});
+ await this.webhooksRepository.update(webhook.id, {
+ name: ps.name,
+ url: ps.url,
+ secret: ps.secret,
+ on: ps.on,
+ active: ps.active,
+ });
+
+ this.globalEventService.publishInternalEvent('webhookUpdated', webhook);
+ });
+ }
+}