condense API routes in meantime
This commit is contained in:
parent
c31db440db
commit
6938983444
9 changed files with 148 additions and 231 deletions
pages/api
78
pages/api/emotes.ts
Normal file
78
pages/api/emotes.ts
Normal file
|
@ -0,0 +1,78 @@
|
|||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { createRedisInstance } from "../../misc/redis";
|
||||
import {
|
||||
getGlobalEmotes as get7TVGlobalEmotes,
|
||||
getChannelEmotes as get7TVChannelEmotes,
|
||||
} from "../../misc/7TVAPI";
|
||||
import {
|
||||
getGlobalEmotes as getBTTVGlobalEmotes,
|
||||
getUserByID as getBTTVUser,
|
||||
} from "../../misc/BTTVAPI";
|
||||
import {
|
||||
getGlobalEmotes as getFFZGlobalEmotes,
|
||||
getEmoteSet as getFFZEmoteSet,
|
||||
} from "../../misc/FFZAPI";
|
||||
import {
|
||||
getGlobalEmotes as getTwitchGlobalEmotes,
|
||||
getChannelEmotes as getTwitchChannelEmotes,
|
||||
} from "../../misc/TwitchAPI";
|
||||
|
||||
type Data = {
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse<Data>
|
||||
) {
|
||||
const redis = createRedisInstance();
|
||||
|
||||
if (!redis) {
|
||||
res
|
||||
.status(500)
|
||||
.json({ error: { message: "Internal API is down", code: 50000 } });
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const cachedJSON = await redis.get("ALL_EMOTES");
|
||||
if (cachedJSON) {
|
||||
const jsonRes = JSON.parse(cachedJSON);
|
||||
redis.quit();
|
||||
res.status(200).json(jsonRes);
|
||||
return;
|
||||
}
|
||||
const ffzGlobal = await getFFZGlobalEmotes(redis);
|
||||
const jsonRes = {
|
||||
"7tv": {
|
||||
global: (await get7TVGlobalEmotes(redis)).namedEmoteSet.emotes,
|
||||
channel: (await get7TVChannelEmotes(redis, "61ad997effa9aba101bcfddf"))
|
||||
.user.emote_sets[0].emotes,
|
||||
},
|
||||
bttv: {
|
||||
global: await getBTTVGlobalEmotes(redis),
|
||||
channel: (await getBTTVUser(redis, "56418014")).channelEmotes,
|
||||
},
|
||||
ffz: {
|
||||
global: ffzGlobal.sets["3"].emoticons.concat(
|
||||
ffzGlobal.sets["4330"].emoticons
|
||||
),
|
||||
channel: (await getFFZEmoteSet(redis, "341402")).set.emoticons,
|
||||
},
|
||||
twitch: {
|
||||
global: (await getTwitchGlobalEmotes(redis)).data,
|
||||
channel: (await getTwitchChannelEmotes(redis, "56418014")).data,
|
||||
},
|
||||
};
|
||||
// cache emotelist for 20 minutes
|
||||
await redis.set("ALL_EMOTES", JSON.stringify(jsonRes), "EX", 1200);
|
||||
redis.quit();
|
||||
|
||||
res.status(200).json(jsonRes);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
res
|
||||
.status(500)
|
||||
.json({ error: { message: "Internal Emote API error", code: 10000 } });
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue