Add /arubinosky (2)
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
"@sveltejs/vite-plugin-svelte": "4.0.4",
|
"@sveltejs/vite-plugin-svelte": "4.0.4",
|
||||||
"autoprefixer": "10.4.20",
|
"autoprefixer": "10.4.20",
|
||||||
"mdsvex": "0.12.3",
|
"mdsvex": "0.12.3",
|
||||||
|
"misskey-js": "2024.11.1-alpha.0",
|
||||||
"schema-dts": "1.1.2",
|
"schema-dts": "1.1.2",
|
||||||
"svelte": "5.16.1",
|
"svelte": "5.16.1",
|
||||||
"svelte-check": "4.1.1",
|
"svelte-check": "4.1.1",
|
||||||
@@ -35,7 +36,6 @@
|
|||||||
"@tailwindcss/typography": "0.5.15",
|
"@tailwindcss/typography": "0.5.15",
|
||||||
"deepmerge": "4.3.1",
|
"deepmerge": "4.3.1",
|
||||||
"lucide-svelte": "0.469.0",
|
"lucide-svelte": "0.469.0",
|
||||||
"misskey-js": "2024.11.1-alpha.0",
|
|
||||||
"sveltekit-rate-limiter": "0.6.1",
|
"sveltekit-rate-limiter": "0.6.1",
|
||||||
"tailwind-merge": "2.6.0"
|
"tailwind-merge": "2.6.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,29 +3,37 @@ import { RateLimiter } from "sveltekit-rate-limiter/server";
|
|||||||
|
|
||||||
import { dev } from "$app/environment";
|
import { dev } from "$app/environment";
|
||||||
import { MISSKEY_API_KEY } from "$env/static/private";
|
import { MISSKEY_API_KEY } from "$env/static/private";
|
||||||
import { api } from "misskey-js";
|
import type { InviteListResponse } from "misskey-js/entities.js";
|
||||||
|
|
||||||
const limiter = new RateLimiter({
|
const limiter = new RateLimiter({
|
||||||
IP: [10, "d"], // IP address limiter
|
IP: [10, "d"], // IP address limiter
|
||||||
IPUA: [5, "10m"], // IP + User Agent limiter
|
IPUA: [5, "10m"], // IP + User Agent limiter
|
||||||
});
|
});
|
||||||
|
|
||||||
const misskey = new api.APIClient({
|
|
||||||
origin: "https://misskey.cannorin.net",
|
|
||||||
credential: MISSKEY_API_KEY,
|
|
||||||
});
|
|
||||||
|
|
||||||
export async function GET(event: RequestEvent) {
|
export async function GET(event: RequestEvent) {
|
||||||
if (!dev && (await limiter.isLimited(event)))
|
if (!dev && (await limiter.isLimited(event)))
|
||||||
return new Response("Too many requests", { status: 429 });
|
return new Response("Too many requests", { status: 429 });
|
||||||
|
|
||||||
const invites = await misskey.request("admin/invite/list", {
|
const res = await fetch(
|
||||||
|
"https://misskey.cannorin.net/api/admin/invite/list",
|
||||||
|
{
|
||||||
|
method: "POST",
|
||||||
|
body: JSON.stringify({
|
||||||
|
i: MISSKEY_API_KEY,
|
||||||
type: "unused",
|
type: "unused",
|
||||||
sort: "+createdAt",
|
sort: "+createdAt",
|
||||||
limit: 10,
|
limit: 10,
|
||||||
});
|
}),
|
||||||
|
headers: {
|
||||||
const invite = invites.find((x) => !x.createdBy && !x.usedAt);
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const json = await res.json();
|
||||||
|
console.log(json);
|
||||||
|
const invite = (json as InviteListResponse).find(
|
||||||
|
(x) => !x.createdBy && !x.usedAt,
|
||||||
|
);
|
||||||
if (invite) return text(invite.code);
|
if (invite) return text(invite.code);
|
||||||
return new Response("Not found", { status: 404 });
|
return new Response("Not found", { status: 404 });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user