async fetch(request: Request) {
const url = new URL(request.url);
switch (url.pathname) {
case "/unlock": {
await this.state.storage.delete("lock");
return new Response(null, {
status: 204,
});
}
case "/lock": {
const lockedUntil = await this.state.storage.get<number>("lock");
if (lockedUntil && lockedUntil > Date.now())
return new Response(null, {
status: 409,
});
const durationSecsString = url.searchParams.get("durationSecs");
if (!durationSecsString)
return new Response(null, {
status: 400,
});
const durationSecsNumber = parseInt(durationSecsString);
if (
!Number.isSafeInteger(durationSecsNumber) ||
durationSecsNumber <= 0
)
return new Response(null, {
status: 400,
});
await this.state.storage.put("lock", Date.now());
return new Response(null, {
status: 204,
});
}
}
}
async fetch(request: Request) {
const url = new URL(request.url);
switch (url.pathname) {
case "/unlock": {
await this.state.storage.delete("lock");
return new Response(null, {
status: 204,
});
}
case "/lock": {
const lockedUntil = await this.state.storage.get<number>("lock");
if (lockedUntil && lockedUntil > Date.now())
return new Response(null, {
status: 409,
});
const durationSecsString = url.searchParams.get("durationSecs");
if (!durationSecsString)
return new Response(null, {
status: 400,
});
const durationSecsNumber = parseInt(durationSecsString);
if (
!Number.isSafeInteger(durationSecsNumber) ||
durationSecsNumber <= 0
)
return new Response(null, {
status: 400,
});
await this.state.storage.put("lock", Date.now());
return new Response(null, {
status: 204,
});
}
}
}