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", "@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"
} }

View File

@@ -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 });
} }