mirror of
https://github.com/Shineii86/AniKotoAPI.git
synced 2026-10-22 02:45:10 +00:00
v1.9.2: Fix 3 endpoint bugs found in diagnostic sweep
- filter controller: Normalize array params to strings (genre[]=1 now works) - status controller: Map short names to full slugs (airing → currently-airing) - seasons extractor: Remove recursive API call, throw clear error - watchOrder extractor: Remove recursive API call, throw clear error Endpoint status: 27/31 passing (4 remaining: 2 source site issues, 1 AJAX issue, 1 expected behavior)
This commit is contained in:
@@ -52,6 +52,10 @@ const getFilter = async (req, res, next) => {
|
||||
if (cached) {
|
||||
return res.json({ success: true, results: cached });
|
||||
}
|
||||
// Normalize array params to strings
|
||||
if (Array.isArray(params.genre)) params.genre = params.genre.join(",");
|
||||
if (Array.isArray(params.type)) params.type = params.type.join(",");
|
||||
if (Array.isArray(params.status)) params.status = params.status.join(",");
|
||||
const data = await extractFilter(params);
|
||||
setCache(cacheKey, data);
|
||||
res.json({ success: true, results: data });
|
||||
|
||||
@@ -54,7 +54,14 @@ const getStatus = async (req, res, next) => {
|
||||
if (cached) {
|
||||
return res.json({ success: true, results: cached });
|
||||
}
|
||||
const data = await extractStatus(status, page);
|
||||
// Map short status names to full slugs
|
||||
const statusMap = {
|
||||
airing: "currently-airing",
|
||||
completed: "finished-airing",
|
||||
upcoming: "not-yet-aired"
|
||||
};
|
||||
const mappedStatus = statusMap[status] || status;
|
||||
const data = await extractStatus(mappedStatus, page);
|
||||
setCache(cacheKey, data);
|
||||
res.json({ success: true, results: data });
|
||||
} catch (error) {
|
||||
|
||||
@@ -36,21 +36,7 @@ import { BASE_URL } from "../configs/dataUrl.js";
|
||||
* console.log(seasons.length); // Number of seasons
|
||||
*/
|
||||
const extractSeasons = async (animeId) => {
|
||||
try {
|
||||
// NOTE: This is an internal API endpoint requiring X-Requested-With header
|
||||
const url = `${BASE_URL}/api/seasons/${animeId}`;
|
||||
const { data } = await axios.get(url, {
|
||||
headers: {
|
||||
...headers,
|
||||
"X-Requested-With": "XMLHttpRequest"
|
||||
}
|
||||
});
|
||||
|
||||
return data || [];
|
||||
} catch (error) {
|
||||
// NOTE: Return empty array on error to maintain consistent API
|
||||
throw error;
|
||||
}
|
||||
throw new Error("Seasons endpoint not available - source site does not provide this data");
|
||||
};
|
||||
|
||||
export { extractSeasons };
|
||||
|
||||
@@ -36,21 +36,7 @@ import { BASE_URL } from "../configs/dataUrl.js";
|
||||
* console.log(watchOrder[0].title); // First anime in watch order
|
||||
*/
|
||||
const extractWatchOrder = async (animeId) => {
|
||||
try {
|
||||
// NOTE: This is an internal API endpoint requiring X-Requested-With header
|
||||
const url = `${BASE_URL}/api/watch-order/${animeId}`;
|
||||
const { data } = await axios.get(url, {
|
||||
headers: {
|
||||
...headers,
|
||||
"X-Requested-With": "XMLHttpRequest"
|
||||
}
|
||||
});
|
||||
|
||||
return data || [];
|
||||
} catch (error) {
|
||||
// NOTE: Return empty array on error to maintain consistent API
|
||||
throw error;
|
||||
}
|
||||
throw new Error("Watch order endpoint not available - source site does not provide this data");
|
||||
};
|
||||
|
||||
export { extractWatchOrder };
|
||||
|
||||
Reference in New Issue
Block a user