taevas.xyz/netlify/functions/osu.ts
2023-11-28 18:37:11 +01:00

38 lines
1.3 KiB
TypeScript

import { Handler } from '@netlify/functions'
import * as osu from 'osu-api-v2-js'
import { OsuInfo } from '../../src/components/infos/Osu'
const handler: Handler = async () => {
const api = await osu.API.createAsync({id: 11451, secret: process.env.API_OSU!})
const profile = await Promise.all([
new Promise((resolve) => resolve(api.getUser({id: 7276846}, osu.Rulesets.osu))),
new Promise((resolve) => resolve(api.getUser({id: 7276846}, osu.Rulesets.taiko))),
new Promise((resolve) => resolve(api.getUser({id: 7276846}, osu.Rulesets.fruits))),
new Promise((resolve) => resolve(api.getUser({id: 7276846}, osu.Rulesets.mania)))
]) as osu.UserExtended[]
const info: OsuInfo = {
country: (profile[0]).country.name || "Unknown",
osu: {global: 0, country: 0},
taiko: {global: 0, country: 0},
fruits: {global: 0, country: 0},
mania: {global: 0, country: 0}
}
for (let i = 0; i < profile.length; i++) {
const ruleset = profile[i]
if (ruleset.statistics && ruleset.rank_history) {
const stats = ruleset.statistics
info[ruleset.rank_history.mode].global = stats.global_rank
info[ruleset.rank_history.mode].country = stats.country_rank
}
}
return {
statusCode: 200,
body: JSON.stringify(info)
}
}
export { handler }