Files
enstrayedapi/routes/etyd.js
2025-05-09 16:59:54 -07:00

73 lines
2.8 KiB
JavaScript

import { app, db, globalConfig } from "../index.js" // Get globals from index
import { checkToken, checkTokenNew } from "../liberals/auth.js"
import { logRequest } from "../liberals/logging.js"
app.get("/api/etyd*", (rreq,rres) => {
let userRequest = rreq.path.replace("/api/etyd/","")
db`select content from etyd where url = ${userRequest}`.then(response => {
if (response.length == 0) {
rres.status(404).send(`etyd.cc: URL "${userRequest}" was not found`)
} else {
rres.redirect(response[0].content)
}
}).catch(dbError => {
logRequest(rres,rreq,500,dbError)
rres.status(500).send(`etyd.cc: An internal error occured`)
})
})
app.delete("/api/etyd*", (rreq,rres) => {
checkTokenNew(rreq,"etyd").then(authRes => {
if (authRes.result === false) {
rres.sendStatus(401) // Token not provided or invalid for this action
} else {
db`delete from etyd where url = ${rreq.path.replace("/api/etyd/","")} and owner = ${authRes.ownerId}`.then(dbRes => {
if (dbRes.count === 1) {
rres.sendStatus(200)
} else if (dbRes.count === 0) {
rres.sendStatus(400)
} else {
logRequest(rres, rreq, 500, `Something bad happened during delete from database`)
rres.sendStatus(500)
}
}).catch(dbErr => {
logRequest(rres, rreq, 500, dbErr)
rres.sendStatus(500)
})
}
})
})
app.post("/api/etyd*", (rreq,rres) => {
checkTokenNew(rreq,"etyd").then(authRes => {
if (authRes.result === false) {
rres.sendStatus(401) // Token not provided or invalid for this action
} else {
if (!rreq.body["url"]) { // Assumption that if the url key isnt present in the body then the request is malformed
rres.sendStatus(400)
} else {
db`insert into etyd (url,content,owner) values (${rreq.path.replace("/api/etyd/","")},${rreq.body["url"]},${authRes.ownerId})`.then(dbRes => {
if (dbRes.count === 1) {
rres.sendStatus(201)
} else {
logRequest(rres,rreq,500,`Database insert did not return expected count but did not error out`)
rres.sendStatus(500)
}
}).catch(dbErr => {
if (dbErr.code == "23505") { // Unique constraint violation, entry already exists
rres.sendStatus(409)
} else {
logRequest(rres,rreq,500,dbErr)
rres.sendStatus(500)
}
})
}
}
})
})
export {app} // export routes to be imported by index for execution