This commit is contained in:
ackimixs
2024-04-11 22:51:06 +02:00
parent 69e7a453e6
commit 97ce6575fc
2 changed files with 94 additions and 28 deletions

View File

@@ -5,29 +5,64 @@ Bun.serve({
port: Bun.env.PORT || 8080, port: Bun.env.PORT || 8080,
async fetch(req) { async fetch(req) {
const url = new URL(req.url); const url = new URL(req.url);
if (req.method === "POST" && url.pathname === "/admin") { if (req.method === "POST") {
if (req.body) { if (url.pathname === "/admin") {
const { urlData, password } = await req.json() as { urlData: string, password: string }; if (req.body) {
if (urlData && password === Bun.env.ADMIN_PASSWORD) { const { urlData, password } = await req.json() as { urlData: string, password: string };
const u = await prisma.url.create({ if (urlData && password === Bun.env.ADMIN_PASSWORD) {
data: { const u = await prisma.url.create({
url: urlData data: {
} url: urlData
}) }
})
return new Response(JSON.stringify({body: u}), { return new Response(JSON.stringify({body: u}), {
status: 200 status: 200
}) })
}
}
} else if (url.pathname == "/admin/clear") {
if (req.body) {
const { password } = await req.json() as { password: string };
if (password === Bun.env.ADMIN_PASSWORD) {
await prisma.url.deleteMany();
return new Response(JSON.stringify({body: "ok"}), {
status: 200
})
}
}
} else if (url.pathname == "/admin/list") {
if (req.body) {
const {password} = await req.json() as { password: string };
if (password === Bun.env.ADMIN_PASSWORD) {
const urls = await prisma.url.findMany();
return new Response(JSON.stringify({body: urls}), {
status: 200
})
}
}
} else if (url.pathname == "/admin/remove") {
if (req.body) {
const { u, password } = await req.json() as { u: string, password: string };
if (u && password === Bun.env.ADMIN_PASSWORD) {
await prisma.url.deleteMany({
where: {
url: u
}
})
return new Response(JSON.stringify({body: u}), {
status: 200
})
}
} }
} }
} }
else if (req.method === "GET") { else if (req.method === "GET") {
const urlRes = await prisma.url.findFirst({ // random
orderBy: { const urls = await prisma.url.findMany();
updatedAt: "desc"
} const urlRes = urls[Math.floor(Math.random() * urls.length)];
});
if (urlRes) { if (urlRes) {
return new Response(null, { return new Response(null, {
status: 302, status: 302,

51
noDb.ts
View File

@@ -1,18 +1,49 @@
let urlToRedirect = "https://instagram.com/modelec_isen"; let listOfUrl = ["https://instagram.com/modelec_isen"];
Bun.serve({ Bun.serve({
port: Bun.env.PORT || 8080, port: Bun.env.PORT || 8080,
async fetch(req) { async fetch(req) {
const url = new URL(req.url); const url = new URL(req.url);
if (req.method === "POST" && url.pathname === "/admin") { if (req.method === "POST") {
if (req.body) { if (url.pathname === "/admin/add") {
const { u, password } = await req.json() as { u: string, password: string }; if (req.body) {
if (u && password === Bun.env.ADMIN_PASSWORD) { const { u, password } = await req.json() as { u: string, password: string };
urlToRedirect = u; if (u && password === Bun.env.ADMIN_PASSWORD) {
listOfUrl.push(u);
return new Response(JSON.stringify({body: u}), { return new Response(JSON.stringify({body: u}), {
status: 200 status: 200
}) })
}
}
} else if (url.pathname == "/admin/clear") {
if (req.body) {
const { password } = await req.json() as { password: string };
if (password === Bun.env.ADMIN_PASSWORD) {
listOfUrl = [];
return new Response(JSON.stringify({body: "ok"}), {
status: 200
})
}
}
} else if (url.pathname == "/admin/list") {
if (req.body) {
const {password} = await req.json() as { password: string };
if (password === Bun.env.ADMIN_PASSWORD) {
return new Response(JSON.stringify({body: listOfUrl}), {
status: 200
})
}
}
} else if (url.pathname == "/admin/remove") {
if (req.body) {
const { u, password } = await req.json() as { u: string, password: string };
if (u && password === Bun.env.ADMIN_PASSWORD) {
listOfUrl = listOfUrl.filter((url) => url !== u);
return new Response(JSON.stringify({body: u}), {
status: 200
})
}
} }
} }
} }
@@ -20,7 +51,7 @@ Bun.serve({
return new Response(null, { return new Response(null, {
status: 302, status: 302,
headers: { headers: {
Location: urlToRedirect Location: listOfUrl[Math.floor(Math.random() * listOfUrl.length)]
} }
}) })
} }