diff options
Diffstat (limited to 'src/routes/api/badges/+server.ts')
| -rw-r--r-- | src/routes/api/badges/+server.ts | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts new file mode 100644 index 00000000..c8a52bcf --- /dev/null +++ b/src/routes/api/badges/+server.ts @@ -0,0 +1,52 @@ +import { userIdentity } from '$lib/AniList/identity.js'; +import { removeUserBadge } from '$lib/userBadgesDatabase.js'; +import { getUserBadges } from '$lib/userBadgesDatabase'; +import { addUserBadge } from '$lib/userBadgesDatabase.js'; + +export const GET = async ({ url }) => { + return Response.json(getUserBadges(Number(url.searchParams.get('id') || 0))); +}; + +export const DELETE = async ({ url, cookies }) => { + const userCookie = cookies.get('user'); + + if (!userCookie) { + return new Response('Unauthenticated', { status: 401 }); + } + + const user = JSON.parse(userCookie); + const identity = await userIdentity({ + tokenType: user['token_type'], + expiresIn: user['expires_in'], + accessToken: user['access_token'], + refreshToken: user['refresh_token'] + }); + + removeUserBadge(identity.id, Number(url.searchParams.get('id'))); + + return Response.json({}); +}; + +export const PUT = async ({ cookies, url }) => { + const userCookie = cookies.get('user'); + + if (!userCookie) { + return new Response('Unauthenticated', { status: 401 }); + } + + const user = JSON.parse(userCookie); + const identity = await userIdentity({ + tokenType: user['token_type'], + expiresIn: user['expires_in'], + accessToken: user['access_token'], + refreshToken: user['refresh_token'] + }); + + addUserBadge(identity.id, { + post: url.searchParams.get('post') || undefined, + image: url.searchParams.get('image') || undefined, + description: url.searchParams.get('description') || undefined + }); + + return Response.json({}); +}; |