2024-04-27 18:45:18 +02:00
|
|
|
import {type Handler} from "@netlify/functions";
|
|
|
|
import * as osu from "osu-api-v2-js";
|
|
|
|
import {type OsuInfo} from "../../src/components/Info/Osu.js";
|
2023-05-08 21:57:34 +02:00
|
|
|
|
2023-11-05 21:01:24 +01:00
|
|
|
const handler: Handler = async () => {
|
2024-04-27 18:45:18 +02:00
|
|
|
const api = await osu.API.createAsync({id: 11451, secret: process.env.API_OSU!});
|
2023-05-08 21:57:34 +02:00
|
|
|
|
2023-11-05 21:01:24 +01:00
|
|
|
const profile = await Promise.all([
|
2024-04-27 18:45:18 +02:00
|
|
|
new Promise((resolve) => {
|
|
|
|
resolve(api.getUser(7276846, osu.Ruleset.osu));
|
|
|
|
}),
|
|
|
|
new Promise((resolve) => {
|
|
|
|
resolve(api.getUser(7276846, osu.Ruleset.taiko));
|
|
|
|
}),
|
|
|
|
new Promise((resolve) => {
|
|
|
|
resolve(api.getUser(7276846, osu.Ruleset.fruits));
|
|
|
|
}),
|
|
|
|
new Promise((resolve) => {
|
|
|
|
resolve(api.getUser(7276846, osu.Ruleset.mania));
|
|
|
|
}),
|
|
|
|
]) as osu.User.Extended[];
|
2023-05-08 21:57:34 +02:00
|
|
|
|
2023-11-05 21:01:24 +01:00
|
|
|
const info: OsuInfo = {
|
2023-11-28 18:37:11 +01:00
|
|
|
country: (profile[0]).country.name || "Unknown",
|
2023-05-31 01:38:27 +02:00
|
|
|
osu: {global: 0, country: 0},
|
|
|
|
taiko: {global: 0, country: 0},
|
|
|
|
fruits: {global: 0, country: 0},
|
2024-04-27 18:45:18 +02:00
|
|
|
mania: {global: 0, country: 0},
|
|
|
|
};
|
2023-05-08 21:57:34 +02:00
|
|
|
|
2024-04-27 21:22:48 +02:00
|
|
|
for (const ruleset of profile) {
|
2024-04-06 15:34:32 +02:00
|
|
|
if (ruleset.rank_history) {
|
2024-04-27 18:45:18 +02:00
|
|
|
const stats = ruleset.statistics;
|
2024-04-27 21:22:48 +02:00
|
|
|
info[ruleset.rank_history.mode].global = stats.global_rank ?? 0;
|
|
|
|
info[ruleset.rank_history.mode].country = stats.country_rank ?? 0;
|
2023-05-08 21:57:34 +02:00
|
|
|
}
|
|
|
|
}
|
2024-04-06 15:34:32 +02:00
|
|
|
|
2024-04-27 21:22:48 +02:00
|
|
|
void api.revokeToken();
|
2023-05-08 21:57:34 +02:00
|
|
|
|
|
|
|
return {
|
|
|
|
statusCode: 200,
|
2024-04-27 18:45:18 +02:00
|
|
|
body: JSON.stringify(info),
|
|
|
|
};
|
|
|
|
};
|
2023-05-08 21:57:34 +02:00
|
|
|
|
2024-04-27 18:45:18 +02:00
|
|
|
export {handler};
|