taevas.xyz/netlify/functions/osu.ts

49 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-05-08 21:57:34 +02:00
import { Handler } from '@netlify/functions'
import { API, APIError, User } from 'osu-api-v2-js'
2023-05-29 14:47:53 +02:00
import { OsuInfo } from '../../src/components/infos/Osu'
2023-05-08 21:57:34 +02:00
const handler: Handler = async (event, context) => {
let api = await API.createAsync({id: 11451, secret: process.env.API_OSU!})
if (!api) {
return {
statusCode: 404,
body: ""
}
}
let profile = await Promise.all([
new Promise((resolve, reject) => resolve((api!.getUser({id: 7276846}, 0)))),
new Promise((resolve, reject) => resolve((api!.getUser({id: 7276846}, 1)))),
new Promise((resolve, reject) => resolve((api!.getUser({id: 7276846}, 2)))),
new Promise((resolve, reject) => resolve((api!.getUser({id: 7276846}, 3))))
])
if (profile.find((mode) => mode instanceof APIError)) {
return {
statusCode: 404,
body: ""
}
}
2023-05-10 19:55:11 +02:00
let ranks: OsuInfo = {
2023-05-08 21:57:34 +02:00
osu: [0,0],
taiko: [0,0],
fruits: [0,0],
mania: [0,0]
}
for (let i = 0; i < profile.length; i++) {
let mode = profile[i] as User
if (mode.rank_history) {
ranks[mode.rank_history.mode] = mode.rank_history.data
}
}
return {
statusCode: 200,
body: JSON.stringify(ranks)
}
}
export { handler }