Added map data cache on BeatSaver API wrapper
This commit is contained in:
parent
f7d805911d
commit
738d476962
@ -1,8 +1,9 @@
|
|||||||
import Config from '../config.json';
|
import Config from '../config.json';
|
||||||
|
|
||||||
|
const mapCache = new Map();
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
BEATSAVER_MAP_API: Config.proxy_url + "/https://api.beatsaver.com/maps/hash/%s",
|
BEATSAVER_MAP_API: Config.proxy_url + "/https://api.beatsaver.com/maps/hash/%s",
|
||||||
// todo: cache map data for 12 hrs
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a specified maps data from BeatSaver
|
* Gets a specified maps data from BeatSaver
|
||||||
@ -11,7 +12,12 @@ module.exports = {
|
|||||||
* @returns The map data
|
* @returns The map data
|
||||||
*/
|
*/
|
||||||
async getMapData(hash) {
|
async getMapData(hash) {
|
||||||
const data = await fetch(this.BEATSAVER_MAP_API.replace("%s", hash), {
|
hash = this.BEATSAVER_MAP_API.replace("%s", hash);
|
||||||
|
if (mapCache.has(hash)) { // Return from cache
|
||||||
|
return mapCache.get(hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await fetch(hash, {
|
||||||
headers: {
|
headers: {
|
||||||
"origin": "Fascinated Overlay"
|
"origin": "Fascinated Overlay"
|
||||||
}
|
}
|
||||||
@ -19,6 +25,11 @@ module.exports = {
|
|||||||
if (data.status === 404) {
|
if (data.status === 404) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return await data.json();
|
const json = await data.json();
|
||||||
|
mapCache.set(hash, json);
|
||||||
|
setTimeout(() => {
|
||||||
|
mapCache.delete(hash);
|
||||||
|
}, 60 * 60 * 1000); // 1h
|
||||||
|
return json;
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user