feat : add chessCom games import

This commit is contained in:
GuillaumeSD
2024-02-27 03:32:46 +01:00
parent b2b80b1cc1
commit 13a4bc06b6
13 changed files with 270 additions and 30 deletions

41
src/lib/chessCom.ts Normal file
View File

@@ -0,0 +1,41 @@
import { ChessComGame } from "@/types/chessCom";
import { getPaddedMonth } from "./helpers";
export const getUserRecentGames = async (
username: string
): Promise<ChessComGame[]> => {
const date = new Date();
const year = date.getUTCFullYear();
const month = date.getUTCMonth() + 1;
const paddedMonth = getPaddedMonth(month);
const res = await fetch(
`https://api.chess.com/pub/player/${username}/games/${year}/${paddedMonth}`
);
if (res.status === 404) return [];
const data = await res.json();
const games: ChessComGame[] = data?.games ?? [];
if (games.length < 20) {
const previousMonth = month === 1 ? 12 : month - 1;
const previousPaddedMonth = getPaddedMonth(previousMonth);
const yearToFetch = previousMonth === 12 ? year - 1 : year;
const resPreviousMonth = await fetch(
`https://api.chess.com/pub/player/${username}/games/${yearToFetch}/${previousPaddedMonth}`
);
const dataPreviousMonth = await resPreviousMonth.json();
games.push(...(dataPreviousMonth?.games ?? []));
}
games.sort((a, b) => {
return b.end_time - a.end_time;
});
return games;
};