From 0e4a111f81cceed275d9bec2695f6e401fb654d8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 12 Nov 2021 02:02:25 +0900 Subject: refactoring Resolve #7779 --- .../backend/src/server/api/endpoints/page-push.ts | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packages/backend/src/server/api/endpoints/page-push.ts (limited to 'packages/backend/src/server/api/endpoints/page-push.ts') diff --git a/packages/backend/src/server/api/endpoints/page-push.ts b/packages/backend/src/server/api/endpoints/page-push.ts new file mode 100644 index 0000000000..a0412e89f1 --- /dev/null +++ b/packages/backend/src/server/api/endpoints/page-push.ts @@ -0,0 +1,50 @@ +import $ from 'cafy'; +import define from '../define'; +import { ID } from '@/misc/cafy-id'; +import { publishMainStream } from '@/services/stream'; +import { Users, Pages } from '@/models/index'; +import { ApiError } from '../error'; + +export const meta = { + requireCredential: true as const, + secure: true, + + params: { + pageId: { + validator: $.type(ID) + }, + + event: { + validator: $.str + }, + + var: { + validator: $.optional.nullable.any + } + }, + + errors: { + noSuchPage: { + message: 'No such page.', + code: 'NO_SUCH_PAGE', + id: '4a13ad31-6729-46b4-b9af-e86b265c2e74' + } + } +}; + +export default define(meta, async (ps, user) => { + const page = await Pages.findOne(ps.pageId); + if (page == null) { + throw new ApiError(meta.errors.noSuchPage); + } + + publishMainStream(page.userId, 'pageEvent', { + pageId: ps.pageId, + event: ps.event, + var: ps.var, + userId: user.id, + user: await Users.pack(user.id, { id: page.userId }, { + detail: true + }) + }); +}); -- cgit v1.2.3-freya