78 lines
2.3 KiB
JavaScript
78 lines
2.3 KiB
JavaScript
import { Bites } from "../../../../models/index.js";
|
|
import define from "../../define.js";
|
|
import { createBite } from "../../../../services/create-bite.js";
|
|
import { MINUTE } from "../../../../const.js";
|
|
import { ApiError } from "../../error.js";
|
|
export const meta = {
|
|
tags: [
|
|
"bites"
|
|
],
|
|
requireCredential: true,
|
|
limit: {
|
|
duration: MINUTE,
|
|
max: 30
|
|
},
|
|
res: {
|
|
type: "object",
|
|
optional: false,
|
|
nullable: false,
|
|
ref: "Bite"
|
|
},
|
|
errors: {
|
|
noSuchNote: {
|
|
message: "No such note.",
|
|
code: "NO_SUCH_NOTE",
|
|
id: "7a80aef8-e4ca-43c2-a997-a6e9b0198374"
|
|
},
|
|
bitesDisabled: {
|
|
message: "User doesn't allow bites.",
|
|
code: "BITES_DISABLED",
|
|
id: "a8cfcada-42e1-4ef4-b15e-6fcd903458b7"
|
|
},
|
|
bitesFollowersOnly: {
|
|
message: "User only lets followers bite them.",
|
|
code: "BITES_FOLLOWERS_ONLY",
|
|
id: "26a2ed34-a1df-408c-9f75-d7459380fb60"
|
|
},
|
|
youHaveBeenBlocked: {
|
|
message: "You cannot bite because you have been blocked by this user.",
|
|
code: "YOU_HAVE_BEEN_BLOCKED",
|
|
id: "c15a5199-7422-4968-941a-2a462c478f7d"
|
|
}
|
|
}
|
|
};
|
|
export const paramDef = {
|
|
type: "object",
|
|
properties: {
|
|
targetType: {
|
|
type: "string",
|
|
enum: [
|
|
"user",
|
|
"bite",
|
|
"note"
|
|
]
|
|
},
|
|
targetId: {
|
|
type: "string",
|
|
format: "misskey:id"
|
|
}
|
|
},
|
|
required: [
|
|
"targetType",
|
|
"targetId"
|
|
]
|
|
};
|
|
export default define(meta, paramDef, async (ps, me)=>{
|
|
let biteId;
|
|
try {
|
|
biteId = await createBite(me, ps.targetType, ps.targetId);
|
|
} catch (err) {
|
|
if (err.id === "9725d0ce-ba28-4dde-95a7-2cbb2c15de24") throw new ApiError(meta.errors.noSuchNote);
|
|
if (err.id === "f82d8d34-beaf-42f3-9135-477d32288213") throw new ApiError(meta.errors.youHaveBeenBlocked);
|
|
if (err.id === "35363f14-f489-45e2-81a9-558450710dfe") throw new ApiError(meta.errors.bitesFollowersOnly);
|
|
if (err.id === "92ce0141-760d-4163-a7a2-73b349e3d133") throw new ApiError(meta.errors.bitesDisabled);
|
|
throw err;
|
|
}
|
|
return await Bites.pack(biteId, me);
|
|
});
|