From 3487ddabea925c810cd712c8681273c3818a2482 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 4 Nov 2018 03:18:32 +0900 Subject: [API] Implement some Emoji APIs --- src/server/api/endpoints/admin/add-emoji.ts | 38 -------------------- src/server/api/endpoints/admin/emoji/add.ts | 38 ++++++++++++++++++++ src/server/api/endpoints/admin/emoji/list.ts | 33 +++++++++++++++++ src/server/api/endpoints/admin/emoji/remove.ts | 31 ++++++++++++++++ src/server/api/endpoints/admin/emoji/update.ts | 49 ++++++++++++++++++++++++++ 5 files changed, 151 insertions(+), 38 deletions(-) delete mode 100644 src/server/api/endpoints/admin/add-emoji.ts create mode 100644 src/server/api/endpoints/admin/emoji/add.ts create mode 100644 src/server/api/endpoints/admin/emoji/list.ts create mode 100644 src/server/api/endpoints/admin/emoji/remove.ts create mode 100644 src/server/api/endpoints/admin/emoji/update.ts (limited to 'src/server/api/endpoints') diff --git a/src/server/api/endpoints/admin/add-emoji.ts b/src/server/api/endpoints/admin/add-emoji.ts deleted file mode 100644 index 9ae258d06c..0000000000 --- a/src/server/api/endpoints/admin/add-emoji.ts +++ /dev/null @@ -1,38 +0,0 @@ -import $ from 'cafy'; -import Emoji from '../../../../models/emoji'; -import define from '../../define'; - -export const meta = { - desc: { - 'ja-JP': 'カスタム絵文字を追加します。' - }, - - requireCredential: true, - requireAdmin: true, - - params: { - name: { - validator: $.str - }, - - url: { - validator: $.str - }, - - aliases: { - validator: $.arr($.str).optional, - default: [] as string[] - } - } -}; - -export default define(meta, (ps) => new Promise(async (res, rej) => { - await Emoji.insert({ - name: ps.name, - host: null, - aliases: ps.aliases, - url: ps.url - }); - - res(); -})); diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts new file mode 100644 index 0000000000..09e142b17e --- /dev/null +++ b/src/server/api/endpoints/admin/emoji/add.ts @@ -0,0 +1,38 @@ +import $ from 'cafy'; +import Emoji from '../../../../../models/emoji'; +import define from '../../../define'; + +export const meta = { + desc: { + 'ja-JP': 'カスタム絵文字を追加します。' + }, + + requireCredential: true, + requireAdmin: true, + + params: { + name: { + validator: $.str + }, + + url: { + validator: $.str + }, + + aliases: { + validator: $.arr($.str).optional, + default: [] as string[] + } + } +}; + +export default define(meta, (ps) => new Promise(async (res, rej) => { + await Emoji.insert({ + name: ps.name, + host: null, + aliases: ps.aliases, + url: ps.url + }); + + res(); +})); diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts new file mode 100644 index 0000000000..fd69fb0b29 --- /dev/null +++ b/src/server/api/endpoints/admin/emoji/list.ts @@ -0,0 +1,33 @@ +import $ from 'cafy'; +import Emoji from '../../../../../models/emoji'; +import define from '../../../define'; + +export const meta = { + desc: { + 'ja-JP': 'カスタム絵文字を取得します。' + }, + + requireCredential: true, + requireAdmin: true, + + params: { + host: { + validator: $.str.optional.nullable, + default: null as any + } + } +}; + +export default define(meta, (ps) => new Promise(async (res, rej) => { + const emojis = await Emoji.find({ + host: ps.host + }); + + res(emojis.map(e => ({ + id: e._id, + name: e.name, + aliases: e.aliases, + host: e.host, + url: e.url + }))); +})); diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts new file mode 100644 index 0000000000..32f1ced0c8 --- /dev/null +++ b/src/server/api/endpoints/admin/emoji/remove.ts @@ -0,0 +1,31 @@ +import $ from 'cafy'; +import Emoji from '../../../../../models/emoji'; +import define from '../../../define'; +import ID from '../../../../../misc/cafy-id'; + +export const meta = { + desc: { + 'ja-JP': 'カスタム絵文字を削除します。' + }, + + requireCredential: true, + requireAdmin: true, + + params: { + id: { + validator: $.type(ID) + } + } +}; + +export default define(meta, (ps) => new Promise(async (res, rej) => { + const emoji = await Emoji.findOne({ + _id: ps.id + }); + + if (emoji == null) return rej('emoji not found'); + + await Emoji.remove({ _id: emoji._id }); + + res(); +})); diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts new file mode 100644 index 0000000000..842ca8924d --- /dev/null +++ b/src/server/api/endpoints/admin/emoji/update.ts @@ -0,0 +1,49 @@ +import $ from 'cafy'; +import Emoji from '../../../../../models/emoji'; +import define from '../../../define'; +import ID from '../../../../../misc/cafy-id'; + +export const meta = { + desc: { + 'ja-JP': 'カスタム絵文字を更新します。' + }, + + requireCredential: true, + requireAdmin: true, + + params: { + id: { + validator: $.type(ID) + }, + + name: { + validator: $.str + }, + + url: { + validator: $.str + }, + + aliases: { + validator: $.arr($.str) + } + } +}; + +export default define(meta, (ps) => new Promise(async (res, rej) => { + const emoji = await Emoji.findOne({ + _id: ps.id + }); + + if (emoji == null) return rej('emoji not found'); + + await Emoji.update({ _id: emoji._id }, { + $set: { + name: ps.name, + aliases: ps.aliases, + url: ps.url + } + }); + + res(); +})); -- cgit v1.2.3-freya