hianimez-api / src /controllers /homeInfo.controller.js
S VIVEGANANDAN
fix: resolve 403 error and clean repo
5769f09
import getSpotlights from "../extractors/spotlight.extractor.js";
import getTrending from "../extractors/trending.extractor.js";
import extractPage from "../helper/extractPages.helper.js";
import extractTopTen from "../extractors/topten.extractor.js";
import { routeTypes } from "../routes/category.route.js";
import extractSchedule from "../extractors/schedule.extractor.js";
import { getCachedData, setCachedData } from "../helper/cache.helper.js";
const genres = routeTypes
.slice(0, 41)
.map((genre) => genre.replace("genre/", ""));
export const getHomeInfo = async (req, res) => {
const cacheKey = "homeInfo";
try {
const cachedResponse = await getCachedData(cacheKey);
if (cachedResponse && Object.keys(cachedResponse).length > 0) {
return cachedResponse;
}
const [
spotlights,
trending,
topTen,
schedule,
topAiring,
mostPopular,
mostFavorite,
latestCompleted,
latestEpisode,
topUpcoming,
recentlyAdded,
] = await Promise.all([
getSpotlights(),
getTrending(),
extractTopTen(),
extractSchedule(new Date().toISOString().split("T")[0]),
extractPage(1, "top-airing"),
extractPage(1, "most-popular"),
extractPage(1, "most-favorite"),
extractPage(1, "completed"),
extractPage(1, "recently-updated"),
extractPage(1, "top-upcoming"),
extractPage(1, "recently-added"),
]);
const responseData = {
spotlights,
trending,
topTen,
today: { schedule },
topAiring: topAiring[0],
mostPopular: mostPopular[0],
mostFavorite: mostFavorite[0],
latestCompleted: latestCompleted[0],
latestEpisode: latestEpisode[0],
topUpcoming: topUpcoming[0],
recentlyAdded: recentlyAdded[0],
genres,
};
setCachedData(cacheKey, responseData).catch((err) => {
console.error("Failed to set cache:", err);
});
return responseData;
} catch (fetchError) {
console.error("Error fetching fresh data:", fetchError);
throw fetchError;
}
};