28 lines
560 B
TypeScript
28 lines
560 B
TypeScript
import { env } from "cloudflare:workers";
|
|
|
|
import type { User } from "~/types/user";
|
|
|
|
export async function getUser(aniListToken: string): Promise<User> {
|
|
const durableObjectId = env.ANILIST_DO.idFromName("GLOBAL");
|
|
const stub = env.ANILIST_DO.get(durableObjectId);
|
|
|
|
let data;
|
|
try {
|
|
data = await stub.getUserProfile(aniListToken);
|
|
} catch (e: any) {
|
|
if (e.message.includes("401")) {
|
|
return null;
|
|
}
|
|
throw e;
|
|
}
|
|
|
|
if (!data) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
...data,
|
|
statistics: { ...data?.statistics?.anime },
|
|
};
|
|
}
|