api / src /server /plugins /anime /komiku_read_chapter.js
OhMyDitzzy
Enabled komiku
13afa3f
import { sendSuccess, ErrorResponses } from "../../lib/response-helper.js";
import { Komiku } from "./komiku.js"
/** @type {import("../../types/plugin.ts").ApiPluginHandler}*/
const handler = {
name: "Komiku: Read chapter",
method: "GET",
version: "1.0.0",
category: ["komiku"],
alias: ["readChapter"],
tags: ["comic"],
parameters: {
query: [
{
name: "slug",
type: "string",
required: true,
description: "Chapter slug of comic",
example: "otonari-no-tenshi-sama-ni-itsunomanika-dame-ningen-ni-sareteita-ken-chapter-00"
}
],
body: [],
headers: []
},
responses: {
200: {
status: 200,
description: "Successfully retrieved data",
example: {
status: 200,
author: "Ditzzy",
note: "Thank you for using this API!",
results: {}
}
},
400: {
status: 400,
description: "Invalid Slug provided",
example: {
status: 400,
message: "Invalid slug - must be a valid of Comic slug"
}
},
404: {
status: 404,
description: "Missing required parameter",
example: {
status: 404,
message: "Missing required parameter: ..."
}
},
500: {
status: 500,
description: "Server error or unavailable",
example: {
status: 500,
message: "An error occurred, please try again later."
}
}
},
exec: async (req, res) => {
const { slug } = req.query;
if (!slug) return ErrorResponses.missingParameter(res, "slug");
const regex = /^[a-z0-9]+(?:-[a-z0-9]+)*-chapter-\d+(?:-\d+)?$/;
if (!regex.test(slug)) return ErrorResponses.invalidUrl(res, "Invalid slug chapter - must be a valid slug chapter of Comic");
const komik = new Komiku();
try {
const detail = await komik.readChapter(slug);
if (detail.results === null) return ErrorResponses.notFound(res);
sendSuccess(res, detail.results)
} catch (e) {
ErrorResponses.serverError(res, "An error occurred, try again later.");
}
}
}
export default handler;