iceshrimp-legacy/packages/backend/src/server/api/endpoints/clips/show.ts
ThatOneCalculator 7c2dabd047
no more eslint
2023-01-12 20:54:33 -08:00

54 lines
1,010 B
TypeScript

import define from "../../define.js";
import { ApiError } from "../../error.js";
import { Clips } from "@/models/index.js";
export const meta = {
tags: ["clips", "account"],
requireCredential: false,
requireCredentialPrivateMode: true,
kind: "read:account",
errors: {
noSuchClip: {
message: "No such clip.",
code: "NO_SUCH_CLIP",
id: "c3c5fe33-d62c-44d2-9ea5-d997703f5c20",
},
},
res: {
type: "object",
optional: false,
nullable: false,
ref: "Clip",
},
} as const;
export const paramDef = {
type: "object",
properties: {
clipId: { type: "string", format: "misskey:id" },
},
required: ["clipId"],
} as const;
export default define(meta, paramDef, async (ps, me) => {
// Fetch the clip
const clip = await Clips.findOneBy({
id: ps.clipId,
});
if (clip == null) {
throw new ApiError(meta.errors.noSuchClip);
}
if (!clip.isPublic && (me == null || clip.userId !== me.id)) {
throw new ApiError(meta.errors.noSuchClip);
}
return await Clips.pack(clip);
});