summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/admin/emoji
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/endpoints/admin/emoji
parentupdate deps (diff)
downloadsharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/admin/emoji')
-rw-r--r--src/server/api/endpoints/admin/emoji/add.ts64
-rw-r--r--src/server/api/endpoints/admin/emoji/copy.ts81
-rw-r--r--src/server/api/endpoints/admin/emoji/list-remote.ts99
-rw-r--r--src/server/api/endpoints/admin/emoji/list.ts98
-rw-r--r--src/server/api/endpoints/admin/emoji/remove.ts42
-rw-r--r--src/server/api/endpoints/admin/emoji/update.ts54
6 files changed, 0 insertions, 438 deletions
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
deleted file mode 100644
index 1af81fe46d..0000000000
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { Emojis, DriveFiles } from '@/models/index';
-import { genId } from '@/misc/gen-id';
-import { getConnection } from 'typeorm';
-import { insertModerationLog } from '@/services/insert-moderation-log';
-import { ApiError } from '../../../error';
-import { ID } from '@/misc/cafy-id';
-import rndstr from 'rndstr';
-import { publishBroadcastStream } from '@/services/stream';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- fileId: {
- validator: $.type(ID)
- },
- },
-
- errors: {
- noSuchFile: {
- message: 'No such file.',
- code: 'MO_SUCH_FILE',
- id: 'fc46b5a4-6b92-4c33-ac66-b806659bb5cf'
- }
- }
-};
-
-export default define(meta, async (ps, me) => {
- const file = await DriveFiles.findOne(ps.fileId);
-
- if (file == null) throw new ApiError(meta.errors.noSuchFile);
-
- const name = file.name.split('.')[0].match(/^[a-z0-9_]+$/) ? file.name.split('.')[0] : `_${rndstr('a-z0-9', 8)}_`;
-
- const emoji = await Emojis.save({
- id: genId(),
- updatedAt: new Date(),
- name: name,
- category: null,
- host: null,
- aliases: [],
- url: file.url,
- type: file.type,
- });
-
- await getConnection().queryResultCache!.remove(['meta_emojis']);
-
- publishBroadcastStream('emojiAdded', {
- emoji: await Emojis.pack(emoji.id)
- });
-
- insertModerationLog(me, 'addEmoji', {
- emojiId: emoji.id
- });
-
- return {
- id: emoji.id
- };
-});
diff --git a/src/server/api/endpoints/admin/emoji/copy.ts b/src/server/api/endpoints/admin/emoji/copy.ts
deleted file mode 100644
index 4c8ab99f7c..0000000000
--- a/src/server/api/endpoints/admin/emoji/copy.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { Emojis } from '@/models/index';
-import { genId } from '@/misc/gen-id';
-import { getConnection } from 'typeorm';
-import { ApiError } from '../../../error';
-import { DriveFile } from '@/models/entities/drive-file';
-import { ID } from '@/misc/cafy-id';
-import uploadFromUrl from '@/services/drive/upload-from-url';
-import { publishBroadcastStream } from '@/services/stream';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- emojiId: {
- validator: $.type(ID)
- },
- },
-
- errors: {
- noSuchEmoji: {
- message: 'No such emoji.',
- code: 'NO_SUCH_EMOJI',
- id: 'e2785b66-dca3-4087-9cac-b93c541cc425'
- }
- },
-
- res: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- }
- }
- }
-};
-
-export default define(meta, async (ps, me) => {
- const emoji = await Emojis.findOne(ps.emojiId);
-
- if (emoji == null) {
- throw new ApiError(meta.errors.noSuchEmoji);
- }
-
- let driveFile: DriveFile;
-
- try {
- // Create file
- driveFile = await uploadFromUrl(emoji.url, null, null, null, false, true);
- } catch (e) {
- throw new ApiError();
- }
-
- const copied = await Emojis.insert({
- id: genId(),
- updatedAt: new Date(),
- name: emoji.name,
- host: null,
- aliases: [],
- url: driveFile.url,
- type: driveFile.type,
- fileId: driveFile.id,
- }).then(x => Emojis.findOneOrFail(x.identifiers[0]));
-
- await getConnection().queryResultCache!.remove(['meta_emojis']);
-
- publishBroadcastStream('emojiAdded', {
- emoji: await Emojis.pack(copied.id)
- });
-
- return {
- id: copied.id
- };
-});
diff --git a/src/server/api/endpoints/admin/emoji/list-remote.ts b/src/server/api/endpoints/admin/emoji/list-remote.ts
deleted file mode 100644
index 3c8ca22170..0000000000
--- a/src/server/api/endpoints/admin/emoji/list-remote.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { Emojis } from '@/models/index';
-import { toPuny } from '@/misc/convert-host';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
-import { ID } from '@/misc/cafy-id';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- query: {
- validator: $.optional.nullable.str,
- default: null
- },
-
- host: {
- validator: $.optional.nullable.str,
- default: null
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- }
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- aliases: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const
- }
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- category: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- host: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- url: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- }
- }
- }
- }
-};
-
-export default define(meta, async (ps) => {
- const q = makePaginationQuery(Emojis.createQueryBuilder('emoji'), ps.sinceId, ps.untilId);
-
- if (ps.host == null) {
- q.andWhere(`emoji.host IS NOT NULL`);
- } else {
- q.andWhere(`emoji.host = :host`, { host: toPuny(ps.host) });
- }
-
- if (ps.query) {
- q.andWhere('emoji.name like :query', { query: '%' + ps.query + '%' });
- }
-
- const emojis = await q
- .orderBy('emoji.id', 'DESC')
- .take(ps.limit!)
- .getMany();
-
- return Emojis.packMany(emojis);
-});
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
deleted file mode 100644
index cb1e79e0fe..0000000000
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { Emojis } from '@/models/index';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
-import { ID } from '@/misc/cafy-id';
-import { Emoji } from '@/models/entities/emoji';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- query: {
- validator: $.optional.nullable.str,
- default: null
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- }
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- aliases: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const
- }
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- category: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- host: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- url: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- }
- }
- }
- }
-};
-
-export default define(meta, async (ps) => {
- const q = makePaginationQuery(Emojis.createQueryBuilder('emoji'), ps.sinceId, ps.untilId)
- .andWhere(`emoji.host IS NULL`);
-
- let emojis: Emoji[];
-
- if (ps.query) {
- //q.andWhere('emoji.name ILIKE :q', { q: `%${ps.query}%` });
- //const emojis = await q.take(ps.limit!).getMany();
-
- emojis = await q.getMany();
-
- emojis = emojis.filter(emoji =>
- emoji.name.includes(ps.query!) ||
- emoji.aliases.some(a => a.includes(ps.query!)) ||
- emoji.category?.includes(ps.query!));
-
- emojis.splice(ps.limit! + 1);
- } else {
- emojis = await q.take(ps.limit!).getMany();
- }
-
- return Emojis.packMany(emojis);
-});
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
deleted file mode 100644
index 259950e362..0000000000
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Emojis } from '@/models/index';
-import { getConnection } from 'typeorm';
-import { insertModerationLog } from '@/services/insert-moderation-log';
-import { ApiError } from '../../../error';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- id: {
- validator: $.type(ID)
- }
- },
-
- errors: {
- noSuchEmoji: {
- message: 'No such emoji.',
- code: 'NO_SUCH_EMOJI',
- id: 'be83669b-773a-44b7-b1f8-e5e5170ac3c2'
- }
- }
-};
-
-export default define(meta, async (ps, me) => {
- const emoji = await Emojis.findOne(ps.id);
-
- if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
-
- await Emojis.delete(emoji.id);
-
- await getConnection().queryResultCache!.remove(['meta_emojis']);
-
- insertModerationLog(me, 'removeEmoji', {
- emoji: emoji
- });
-});
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
deleted file mode 100644
index 3fd547d7e5..0000000000
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Emojis } from '@/models/index';
-import { getConnection } from 'typeorm';
-import { ApiError } from '../../../error';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- id: {
- validator: $.type(ID)
- },
-
- name: {
- validator: $.str
- },
-
- category: {
- validator: $.optional.nullable.str
- },
-
- aliases: {
- validator: $.arr($.str)
- }
- },
-
- errors: {
- noSuchEmoji: {
- message: 'No such emoji.',
- code: 'NO_SUCH_EMOJI',
- id: '684dec9d-a8c2-4364-9aa8-456c49cb1dc8'
- }
- }
-};
-
-export default define(meta, async (ps) => {
- const emoji = await Emojis.findOne(ps.id);
-
- if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
-
- await Emojis.update(emoji.id, {
- updatedAt: new Date(),
- name: ps.name,
- category: ps.category,
- aliases: ps.aliases,
- });
-
- await getConnection().queryResultCache!.remove(['meta_emojis']);
-});