Add /arubinosky (2)

This commit is contained in:
2025-01-08 01:48:03 +09:00
parent 759228e3a1
commit 0e9053fe7d
2 changed files with 22 additions and 14 deletions

View File

@@ -20,6 +20,7 @@
"@sveltejs/vite-plugin-svelte": "4.0.4",
"autoprefixer": "10.4.20",
"mdsvex": "0.12.3",
"misskey-js": "2024.11.1-alpha.0",
"schema-dts": "1.1.2",
"svelte": "5.16.1",
"svelte-check": "4.1.1",
@@ -35,7 +36,6 @@
"@tailwindcss/typography": "0.5.15",
"deepmerge": "4.3.1",
"lucide-svelte": "0.469.0",
"misskey-js": "2024.11.1-alpha.0",
"sveltekit-rate-limiter": "0.6.1",
"tailwind-merge": "2.6.0"
}

View File

@@ -3,29 +3,37 @@ import { RateLimiter } from "sveltekit-rate-limiter/server";
import { dev } from "$app/environment";
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({
IP: [10, "d"], // IP address 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) {
if (!dev && (await limiter.isLimited(event)))
return new Response("Too many requests", { status: 429 });
const invites = await misskey.request("admin/invite/list", {
type: "unused",
sort: "+createdAt",
limit: 10,
});
const invite = invites.find((x) => !x.createdBy && !x.usedAt);
const res = await fetch(
"https://misskey.cannorin.net/api/admin/invite/list",
{
method: "POST",
body: JSON.stringify({
i: MISSKEY_API_KEY,
type: "unused",
sort: "+createdAt",
limit: 10,
}),
headers: {
"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);
return new Response("Not found", { status: 404 });
}