23 lines
786 B
TypeScript
23 lines
786 B
TypeScript
// i really need to learn deno emit (or host this publicly so i can reference it with urls)
|
|
import { randomInt } from "https://deno.land/std@0.146.0/node/internal/crypto/random.ts";
|
|
export const pick_random = <T>(xs: readonly T[]): T => xs[randomInt(xs.length)];
|
|
|
|
Deno.serve({ port: 61262 }, (req: Request) => {
|
|
const url = new URL(req.url);
|
|
const links = url.search.replace(/^\?+/, "")
|
|
.split("::")
|
|
.filter(Boolean)
|
|
.map((href) => /^.+:\/\/.+/.test(href) ? href : ("http://" + href));
|
|
|
|
if (links.length == 0) {
|
|
return new Response("couldn't get any links man", { status: 400 });
|
|
}
|
|
console.log(links);
|
|
|
|
const chosen = pick_random(links);
|
|
return new Response(`redirecting you to ${chosen}`, {
|
|
status: 307,
|
|
headers: { "Location": chosen },
|
|
});
|
|
});
|