diff options
Diffstat (limited to 'src/server/api/endpoints/clips/show.ts')
| -rw-r--r-- | src/server/api/endpoints/clips/show.ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/server/api/endpoints/clips/show.ts b/src/server/api/endpoints/clips/show.ts new file mode 100644 index 0000000000..0766b3e929 --- /dev/null +++ b/src/server/api/endpoints/clips/show.ts @@ -0,0 +1,41 @@ +import $ from 'cafy'; +import { ID } from '../../../../misc/cafy-id'; +import define from '../../define'; +import { ApiError } from '../../error'; +import { Clips } from '../../../../models'; + +export const meta = { + tags: ['clips', 'account'], + + requireCredential: true, + + kind: 'read:account', + + params: { + clipId: { + validator: $.type(ID), + }, + }, + + errors: { + noSuchClip: { + message: 'No such clip.', + code: 'NO_SUCH_CLIP', + id: 'c3c5fe33-d62c-44d2-9ea5-d997703f5c20' + }, + } +}; + +export default define(meta, async (ps, me) => { + // Fetch the clip + const clip = await Clips.findOne({ + id: ps.clipId, + userId: me.id, + }); + + if (clip == null) { + throw new ApiError(meta.errors.noSuchClip); + } + + return await Clips.pack(clip); +}); |