🕵️ Adding the cache for getServers

pull/33/head
capitanwesler 4 years ago
parent cf7e3a39a9
commit 2effa8e95c

@ -3,6 +3,7 @@ import { requestGot } from '../utils/requestCall';
import { animeFlvInfo, jkanimeInfo, videoServersJK } from '../utils/util'; import { animeFlvInfo, jkanimeInfo, videoServersJK } from '../utils/util';
import { transformUrlServer } from '../utils/transformerUrl'; import { transformUrlServer } from '../utils/transformerUrl';
import AnimeModel, { Anime as ModelA } from '../database/models/anime.model'; import AnimeModel, { Anime as ModelA } from '../database/models/anime.model';
import { hashStringMd5 } from '../utils/util';
import { import {
animeExtraInfo, animeExtraInfo,
getAnimeVideoPromo, getAnimeVideoPromo,
@ -11,6 +12,10 @@ import {
getRelatedAnimesMAL, getRelatedAnimesMAL,
} from '../utils/util'; } from '../utils/util';
import urls from '../utils/urls'; import urls from '../utils/urls';
import { redisClient } from '../database/connection';
// @ts-ignore
redisClient.get = util.promisify(redisClient.get);
/* /*
AnimeController - a class to manage the schedule, AnimeController - a class to manage the schedule,
@ -175,7 +180,7 @@ export default class AnimeController {
for (const episode of data.episodes) { for (const episode of data.episodes) {
const formattedEpisode: Episode = { const formattedEpisode: Episode = {
id: "12345/" + episode.id, id: '12345/' + episode.id,
title: episode.title, title: episode.title,
image: episode.poster, image: episode.poster,
episode: episode.episode, episode: episode.episode,
@ -260,19 +265,48 @@ export default class AnimeController {
async getServers(req: Request, res: Response, next: NextFunction) { async getServers(req: Request, res: Response, next: NextFunction) {
const { id } = req.params; const { id } = req.params;
let data: any;
try { try {
const resultQueryRedis: any = await redisClient.get(
`servers_${hashStringMd5(id)}`,
);
if (resultQueryRedis) {
const resultRedis: any = JSON.parse(resultQueryRedis);
return res.status(200).json(resultRedis);
} else {
if (isNaN(parseInt(id.split('/')[0]))) { if (isNaN(parseInt(id.split('/')[0]))) {
res.status(200).json({ servers: await videoServersJK(id) }); data = await videoServersJK(id);
} else { } else {
const data: any = await requestGot( data = await requestGot(
`${urls.BASE_ANIMEFLV_JELU}GetAnimeServers/${id}`, `${urls.BASE_ANIMEFLV_JELU}GetAnimeServers/${id}`,
{ parse: true, scrapy: false }, { parse: true, scrapy: false },
); );
res data = await transformUrlServer(data.servers);
.status(200) }
.json({ servers: await transformUrlServer(data.servers) });
if (data) {
/* Set the key in the redis cache. */
redisClient.set(
`moreInfo_${hashStringMd5(id)}`,
JSON.stringify(data),
);
/* After 24hrs expire the key. */
redisClient.expireat(
`moreInfo_${hashStringMd5(id)}`,
new Date().getTime() + 86400000,
);
res.status(200).json({ servers: data });
} else {
res.status(500).json({ message: 'Aruppi lost in the shell' });
}
} }
} catch (err) { } catch (err) {
return next(err); return next(err);

Loading…
Cancel
Save