I forgor
This commit is contained in:
6
index.js
6
index.js
@@ -14,7 +14,7 @@ function criticalFileLoader(file) {
|
|||||||
const globalConfig = JSON.parse(criticalFileLoader('config.json'))
|
const globalConfig = JSON.parse(criticalFileLoader('config.json'))
|
||||||
const globalVersion = criticalFileLoader('GITVERSION').split(" ")[0]
|
const globalVersion = criticalFileLoader('GITVERSION').split(" ")[0]
|
||||||
|
|
||||||
module.exports = { app, globalConfig, fs } // Export express app and fs objects and globalconfig
|
module.exports = { app, globalConfig, fs, globalVersion } // Export express app and fs objects and globalconfig
|
||||||
|
|
||||||
app.use(express.json()) // Allows receiving JSON bodies
|
app.use(express.json()) // Allows receiving JSON bodies
|
||||||
// see important note: https://expressjs.com/en/api.html#express.json
|
// see important note: https://expressjs.com/en/api.html#express.json
|
||||||
@@ -39,9 +39,5 @@ fs.readdir(globalConfig.startup.routesDir, (err, files) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
app.get("/", (rreq,rres) => {
|
|
||||||
rres.send(`Enstrayed API | Version: ${globalVersion} | Documentation: <a href="https://etyd.cc/apidocs">etyd.cc/apidocs</a>`)
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log(`Enstrayed API | Version: ${globalVersion} | Port: ${globalConfig.startup.apiPort}`)
|
console.log(`Enstrayed API | Version: ${globalVersion} | Port: ${globalConfig.startup.apiPort}`)
|
||||||
app.listen(globalConfig.startup.apiPort)
|
app.listen(globalConfig.startup.apiPort)
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
const { globalConfig } = require("../index.js")
|
const { globalConfig } = require("../index.js")
|
||||||
|
|
||||||
async function checkToken(token,scope) {
|
async function checkToken(token,scope) {
|
||||||
return await fetch(`http://${globalConfig.couchdb.host}/auth/sessions`, {
|
return await fetch(`${globalConfig.couchdbHost}/auth/sessions`).then(fetchRes => {
|
||||||
headers: {
|
|
||||||
"Authorization": `Basic ${btoa(globalConfig.couchdb.authorization)}`
|
|
||||||
}
|
|
||||||
}).then(fetchRes => {
|
|
||||||
|
|
||||||
// CouchDB should only ever return 200/304 for success so this should work
|
// CouchDB should only ever return 200/304 for success so this should work
|
||||||
// https://docs.couchdb.org/en/stable/api/document/common.html#get--db-docid
|
// https://docs.couchdb.org/en/stable/api/document/common.html#get--db-docid
|
||||||
|
|||||||
44
routes/frontpage.js
Normal file
44
routes/frontpage.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
const { app, globalConfig, fs, globalVersion } = require("../index.js") // Get globals from index
|
||||||
|
|
||||||
|
var timeSinceLastQuery = Date.now()-10000
|
||||||
|
var cachedResult = ""
|
||||||
|
|
||||||
|
app.get("/static/*", (rreq,rres) => {
|
||||||
|
rres.sendFile(globalConfig.frontpage.frontpageDir+"/static/"+rreq.url.replace("/static/",""))
|
||||||
|
})
|
||||||
|
|
||||||
|
app.get("/posts/*", (rreq,rres) => {
|
||||||
|
rres.sendFile(globalConfig.frontpage.frontpageDir+"/posts/"+rreq.url.replace("/posts/",""))
|
||||||
|
})
|
||||||
|
|
||||||
|
app.get("/", (rreq, rres) => {
|
||||||
|
if (Date.now() < timeSinceLastQuery+10000) {
|
||||||
|
rres.send(cachedResult)
|
||||||
|
} else {
|
||||||
|
let indexFile = fs.readFileSync(globalConfig.frontpage.frontpageDir+"/index.html","utf-8")
|
||||||
|
cachedResult = indexFile.replace("<!--SSR_BLOGPOSTS-->",parseFiles()).replace("<!--SSR_APIVERSION-->",`<sup>API Version ${globalVersion}</sup>`)
|
||||||
|
rres.send(cachedResult)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function parseFiles() {
|
||||||
|
let files = fs.readdirSync(globalConfig.frontpage.frontpageDir+"/posts/")
|
||||||
|
let result = ""
|
||||||
|
|
||||||
|
for (x in files) {
|
||||||
|
if (files[x].endsWith(".html") === false) { break } // If file/dir is not .html then ignore
|
||||||
|
|
||||||
|
let date = files[x].split("-")[0]
|
||||||
|
if (date < 10000000 || date > 99999999) { break } // If date does not fit ISO8601 format then ignore
|
||||||
|
|
||||||
|
date = date.replace(/.{2}/g,"$&-").replace("-","").slice(0,-1) // Insert a dash every 2 characters, remove the first dash, remove the last character
|
||||||
|
|
||||||
|
let name = files[x].slice(9).replace(/-/g," ").replace(".html","") // Strip Date, replace seperator with space & remove file extension
|
||||||
|
|
||||||
|
result = `<span>${date} <a href="${globalConfig.blog.postsDirUrl}/${files[x]}">${name}</a></span>`+result
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {app}
|
||||||
Reference in New Issue
Block a user