Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Create new short link endpoint
  • Loading branch information
regalijan committed Oct 26, 2024
1 parent 9aa100f commit a951dfa
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions functions/api/short-links/new.ts
@@ -0,0 +1,35 @@
import { jsonError } from "../../common.js";

export async function onRequestPost(context: RequestContext) {
const { destination, path } = context.data.body;

if (typeof path !== "string" || path.length > 256)
return jsonError("Invalid path", 400);

const result = await context.env.D1.prepare(
"SELECT path FROM short_links WHERE path = ?;",
)
.bind(path)
.first();

if (result)
return jsonError(
"Short link with that path already exists, please choose a different one.",
400,
);

const url = new URL(destination);

if (!["http:", "https:"].includes(url.protocol))
return jsonError("Invalid URL", 400);

await context.env.D1.prepare(
"INSERT INTO short_links (created_at, destination, path, user) VALUES (?, ?, ?, ?);",
)
.bind(Date.now(), destination, path, context.data.current_user.id)
.run();

return new Response(null, {
status: 204,
});
}

0 comments on commit a951dfa

Please sign in to comment.