Initial commit

This commit is contained in:
Zoe
2026-08-07 22:13:25 -05:00
commit 8006fd67f3
40 changed files with 11017 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import {
createError,
defineEventHandler,
getRequestHeader,
getRouterParam,
setResponseStatus,
} from "h3";
import { dropStore, DropStoreError } from "../../../utils/drop-store";
import { bearerToken, publicHeaders, readBounded } from "../../../utils/http";
export default defineEventHandler(async (event) => {
publicHeaders(event);
if ((await readBounded(event, 0)).byteLength)
throw createError({
statusCode: 400,
statusMessage: "Lease claim body must be empty.",
});
const id = String(getRouterParam(event, "id") || "").toUpperCase();
const access = getRequestHeader(event, "x-quickdrop-access") || "";
try {
const result = await dropStore.claim(id, access, bearerToken(event));
setResponseStatus(event, result.reused ? 200 : 201);
return {
token: result.token,
leaseExpiresAt: new Date(result.leaseExpiresAt).toISOString(),
expiresAt: new Date(result.expiresAt).toISOString(),
};
} catch (error) {
if (error instanceof DropStoreError) {
const status =
error.code === "exhausted" || error.code === "expired"
? 410
: error.code === "forbidden"
? 403
: 404;
throw createError({ statusCode: status, statusMessage: error.message });
}
throw error;
}
});