From b697b2f651d2b8a97407bcfdb12cd53626943ba7 Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 5 Jun 2023 07:16:21 +0000 Subject: [PATCH] wip --- .../src/server/api/endpoints/ap/get.ts | 1 - .../src/server/api/endpoints/ap/show.ts | 1 - .../server/api/endpoints/blocking/create.ts | 1 - .../server/api/endpoints/channels/create.ts | 1 - .../server/api/endpoints/clips/add-note.ts | 64 ++----------------- packages/misskey-js/src/endpoints.ts | 55 ++++++++++++++++ 6 files changed, 62 insertions(+), 61 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/ap/get.ts b/packages/backend/src/server/api/endpoints/ap/get.ts index 76c932e835..3ceb522170 100644 --- a/packages/backend/src/server/api/endpoints/ap/get.ts +++ b/packages/backend/src/server/api/endpoints/ap/get.ts @@ -1,5 +1,4 @@ import { Injectable } from '@nestjs/common'; -import ms from 'ms'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { ApResolverService } from '@/core/activitypub/ApResolverService.js'; diff --git a/packages/backend/src/server/api/endpoints/ap/show.ts b/packages/backend/src/server/api/endpoints/ap/show.ts index cec142335f..86f4c41793 100644 --- a/packages/backend/src/server/api/endpoints/ap/show.ts +++ b/packages/backend/src/server/api/endpoints/ap/show.ts @@ -1,5 +1,4 @@ import { Inject, Injectable } from '@nestjs/common'; -import ms from 'ms'; import { Endpoint } from '@/server/api/endpoint-base.js'; import type { UsersRepository, NotesRepository } from '@/models/index.js'; import type { Note } from '@/models/entities/Note.js'; diff --git a/packages/backend/src/server/api/endpoints/blocking/create.ts b/packages/backend/src/server/api/endpoints/blocking/create.ts index 2c2eea809d..f5a75c5e3b 100644 --- a/packages/backend/src/server/api/endpoints/blocking/create.ts +++ b/packages/backend/src/server/api/endpoints/blocking/create.ts @@ -1,4 +1,3 @@ -import ms from 'ms'; import { Inject, Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; import type { UsersRepository, BlockingsRepository } from '@/models/index.js'; diff --git a/packages/backend/src/server/api/endpoints/channels/create.ts b/packages/backend/src/server/api/endpoints/channels/create.ts index 593ab208de..d6cbf35a95 100644 --- a/packages/backend/src/server/api/endpoints/channels/create.ts +++ b/packages/backend/src/server/api/endpoints/channels/create.ts @@ -1,5 +1,4 @@ import { Inject, Injectable } from '@nestjs/common'; -import ms from 'ms'; import { Endpoint } from '@/server/api/endpoint-base.js'; import type { ChannelsRepository, DriveFilesRepository } from '@/models/index.js'; import type { Channel } from '@/models/entities/Channel.js'; diff --git a/packages/backend/src/server/api/endpoints/clips/add-note.ts b/packages/backend/src/server/api/endpoints/clips/add-note.ts index c3561e2a71..00274ac171 100644 --- a/packages/backend/src/server/api/endpoints/clips/add-note.ts +++ b/packages/backend/src/server/api/endpoints/clips/add-note.ts @@ -1,5 +1,4 @@ import { Inject, Injectable } from '@nestjs/common'; -import ms from 'ms'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { IdService } from '@/core/IdService.js'; import { DI } from '@/di-symbols.js'; @@ -8,59 +7,10 @@ import { GetterService } from '@/server/api/GetterService.js'; import { RoleService } from '@/core/RoleService.js'; import { ApiError } from '../../error.js'; -export const meta = { - tags: ['account', 'notes', 'clips'], - - requireCredential: true, - - prohibitMoved: true, - - kind: 'write:account', - - limit: { - duration: ms('1hour'), - max: 20, - }, - - errors: { - noSuchClip: { - message: 'No such clip.', - code: 'NO_SUCH_CLIP', - id: 'd6e76cc0-a1b5-4c7c-a287-73fa9c716dcf', - }, - - noSuchNote: { - message: 'No such note.', - code: 'NO_SUCH_NOTE', - id: 'fc8c0b49-c7a3-4664-a0a6-b418d386bb8b', - }, - - alreadyClipped: { - message: 'The note has already been clipped.', - code: 'ALREADY_CLIPPED', - id: '734806c4-542c-463a-9311-15c512803965', - }, - - tooManyClipNotes: { - message: 'You cannot add notes to the clip any more.', - code: 'TOO_MANY_CLIP_NOTES', - id: 'f0dba960-ff73-4615-8df4-d6ac5d9dc118', - }, - }, -} as const; - -export const paramDef = { - type: 'object', - properties: { - clipId: { type: 'string', format: 'misskey:id' }, - noteId: { type: 'string', format: 'misskey:id' }, - }, - required: ['clipId', 'noteId'], -} as const; - // eslint-disable-next-line import/no-default-export @Injectable() -export default class extends Endpoint { +export default class extends Endpoint<'clips/add-note'> { + name = 'clips/add-note' as const; constructor( @Inject(DI.clipsRepository) private clipsRepository: ClipsRepository, @@ -72,18 +22,18 @@ export default class extends Endpoint { private roleService: RoleService, private getterService: GetterService, ) { - super(meta, paramDef, async (ps, me) => { + super(async (ps, me) => { const clip = await this.clipsRepository.findOneBy({ id: ps.clipId, userId: me.id, }); if (clip == null) { - throw new ApiError(meta.errors.noSuchClip); + throw new ApiError(this.meta.errors.noSuchClip); } const note = await this.getterService.getNote(ps.noteId).catch(e => { - if (e.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote); + if (e.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(this.meta.errors.noSuchNote); throw e; }); @@ -93,14 +43,14 @@ export default class extends Endpoint { }); if (exist != null) { - throw new ApiError(meta.errors.alreadyClipped); + throw new ApiError(this.meta.errors.alreadyClipped); } const currentCount = await this.clipNotesRepository.countBy({ clipId: clip.id, }); if (currentCount > (await this.roleService.getUserPolicies(me.id)).noteEachClipsLimit) { - throw new ApiError(meta.errors.tooManyClipNotes); + throw new ApiError(this.meta.errors.tooManyClipNotes); } await this.clipNotesRepository.insert({ diff --git a/packages/misskey-js/src/endpoints.ts b/packages/misskey-js/src/endpoints.ts index 39863512c0..a654857ea5 100644 --- a/packages/misskey-js/src/endpoints.ts +++ b/packages/misskey-js/src/endpoints.ts @@ -3223,6 +3223,61 @@ export const endpoints = { }], }, //#endregion + + //#region clips + 'clips/add-note': { + tags: ['account', 'notes', 'clips'], + + requireCredential: true, + + prohibitMoved: true, + + kind: 'write:account', + + limit: { + duration: ms('1hour'), + max: 20, + }, + + errors: { + noSuchClip: { + message: 'No such clip.', + code: 'NO_SUCH_CLIP', + id: 'd6e76cc0-a1b5-4c7c-a287-73fa9c716dcf', + }, + + noSuchNote: { + message: 'No such note.', + code: 'NO_SUCH_NOTE', + id: 'fc8c0b49-c7a3-4664-a0a6-b418d386bb8b', + }, + + alreadyClipped: { + message: 'The note has already been clipped.', + code: 'ALREADY_CLIPPED', + id: '734806c4-542c-463a-9311-15c512803965', + }, + + tooManyClipNotes: { + message: 'You cannot add notes to the clip any more.', + code: 'TOO_MANY_CLIP_NOTES', + id: 'f0dba960-ff73-4615-8df4-d6ac5d9dc118', + }, + }, + + defines: [{ + req: { + type: 'object', + properties: { + clipId: { type: 'string', format: 'misskey:id' }, + noteId: { type: 'string', format: 'misskey:id' }, + }, + required: ['clipId', 'noteId'], + }, + res: undefined, + }] + }, + //#endregion } as const satisfies { [x: string]: IEndpointMeta; }; /**