summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/messaging/messages/create.ts
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/messaging/messages/create.ts
parentupdate deps (diff)
downloadsharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/messaging/messages/create.ts')
-rw-r--r--src/server/api/endpoints/messaging/messages/create.ts148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/server/api/endpoints/messaging/messages/create.ts b/src/server/api/endpoints/messaging/messages/create.ts
deleted file mode 100644
index df0b455cbe..0000000000
--- a/src/server/api/endpoints/messaging/messages/create.ts
+++ /dev/null
@@ -1,148 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { MessagingMessages, DriveFiles, UserGroups, UserGroupJoinings, Blockings } from '@/models/index';
-import { User } from '@/models/entities/user';
-import { UserGroup } from '@/models/entities/user-group';
-import { createMessage } from '@/services/messages/create';
-
-export const meta = {
- tags: ['messaging'],
-
- requireCredential: true as const,
-
- kind: 'write:messaging',
-
- params: {
- userId: {
- validator: $.optional.type(ID),
- },
-
- groupId: {
- validator: $.optional.type(ID),
- },
-
- text: {
- validator: $.optional.str.pipe(MessagingMessages.validateText)
- },
-
- fileId: {
- validator: $.optional.type(ID),
- }
- },
-
- res: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'MessagingMessage',
- },
-
- errors: {
- recipientIsYourself: {
- message: 'You can not send a message to yourself.',
- code: 'RECIPIENT_IS_YOURSELF',
- id: '17e2ba79-e22a-4cbc-bf91-d327643f4a7e'
- },
-
- noSuchUser: {
- message: 'No such user.',
- code: 'NO_SUCH_USER',
- id: '11795c64-40ea-4198-b06e-3c873ed9039d'
- },
-
- noSuchGroup: {
- message: 'No such group.',
- code: 'NO_SUCH_GROUP',
- id: 'c94e2a5d-06aa-4914-8fa6-6a42e73d6537'
- },
-
- groupAccessDenied: {
- message: 'You can not send messages to groups that you have not joined.',
- code: 'GROUP_ACCESS_DENIED',
- id: 'd96b3cca-5ad1-438b-ad8b-02f931308fbd'
- },
-
- noSuchFile: {
- message: 'No such file.',
- code: 'NO_SUCH_FILE',
- id: '4372b8e2-185d-4146-8749-2f68864a3e5f'
- },
-
- contentRequired: {
- message: 'Content required. You need to set text or fileId.',
- code: 'CONTENT_REQUIRED',
- id: '25587321-b0e6-449c-9239-f8925092942c'
- },
-
- youHaveBeenBlocked: {
- message: 'You cannot send a message because you have been blocked by this user.',
- code: 'YOU_HAVE_BEEN_BLOCKED',
- id: 'c15a5199-7422-4968-941a-2a462c478f7d'
- },
- }
-};
-
-export default define(meta, async (ps, user) => {
- let recipientUser: User | undefined;
- let recipientGroup: UserGroup | undefined;
-
- if (ps.userId != null) {
- // Myself
- if (ps.userId === user.id) {
- throw new ApiError(meta.errors.recipientIsYourself);
- }
-
- // Fetch recipient (user)
- recipientUser = await getUser(ps.userId).catch(e => {
- if (e.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser);
- throw e;
- });
-
- // Check blocking
- const block = await Blockings.findOne({
- blockerId: recipientUser.id,
- blockeeId: user.id,
- });
- if (block) {
- throw new ApiError(meta.errors.youHaveBeenBlocked);
- }
- } else if (ps.groupId != null) {
- // Fetch recipient (group)
- recipientGroup = await UserGroups.findOne(ps.groupId);
-
- if (recipientGroup == null) {
- throw new ApiError(meta.errors.noSuchGroup);
- }
-
- // check joined
- const joining = await UserGroupJoinings.findOne({
- userId: user.id,
- userGroupId: recipientGroup.id
- });
-
- if (joining == null) {
- throw new ApiError(meta.errors.groupAccessDenied);
- }
- }
-
- let file = null;
- if (ps.fileId != null) {
- file = await DriveFiles.findOne({
- id: ps.fileId,
- userId: user.id
- });
-
- if (file == null) {
- throw new ApiError(meta.errors.noSuchFile);
- }
- }
-
- // テキストが無いかつ添付ファイルも無かったらエラー
- if (ps.text == null && file == null) {
- throw new ApiError(meta.errors.contentRequired);
- }
-
- return await createMessage(user, recipientUser, recipientGroup, ps.text, file);
-});