aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-06 17:03:45 -0800
committerFuwn <[email protected]>2024-01-06 17:03:45 -0800
commit7515d21ac9723b2a4df7dfd94f92acd4dd4e9ec9 (patch)
tree184a0b5f3728bf2007c617146507ad8972ef619c
parentrefactor(api): simple oauth handler (diff)
downloaddue.moe-7515d21ac9723b2a4df7dfd94f92acd4dd4e9ec9.tar.xz
due.moe-7515d21ac9723b2a4df7dfd94f92acd4dd4e9ec9.zip
feat(api): myanimelist oauth
-rw-r--r--src/lib/oauth.ts4
-rw-r--r--src/routes/api/myanimelist/oauth/callback/+server.ts18
2 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/oauth.ts b/src/lib/oauth.ts
index 53764fad..1c35223d 100644
--- a/src/lib/oauth.ts
+++ b/src/lib/oauth.ts
@@ -14,6 +14,7 @@ export interface CallbackOptions {
authorise: string;
redirect?: string;
client: ClientOptions;
+ verifier?: string;
}
export const callback = async (options: CallbackOptions) => {
@@ -25,6 +26,9 @@ export const callback = async (options: CallbackOptions) => {
formData.append('client_secret', client.secret);
formData.append('redirect_uri', client.redirectURI);
formData.append('code', url.searchParams.get('code') || 'null');
+
+ if (options.verifier) formData.append('code_verifier', options.verifier);
+
cookies.set(
cookie,
JSON.stringify(
diff --git a/src/routes/api/myanimelist/oauth/callback/+server.ts b/src/routes/api/myanimelist/oauth/callback/+server.ts
new file mode 100644
index 00000000..a1d3d6bb
--- /dev/null
+++ b/src/routes/api/myanimelist/oauth/callback/+server.ts
@@ -0,0 +1,18 @@
+import { callback } from '$lib/oauth.js';
+import { env } from '$env/dynamic/private';
+import { env as env2 } from '$env/dynamic/public';
+
+export const GET = async ({ url, cookies }) =>
+ callback({
+ url,
+ cookies,
+ cookie: 'myanimelist',
+ authorise: 'https://myanimelist.net/v1/oauth2/token',
+ redirect: '/settings',
+ verifier: env.CODE_VERIFIER,
+ client: {
+ id: env2.PUBLIC_MYANIMELIST_CLIENT_ID,
+ secret: env.MYANIMELIST_CLIENT_SECRET,
+ redirectURI: env2.PUBLIC_MYANIMLIST_REDIRECT_URI
+ }
+ });