yellowcab/server.js
2022-10-23 21:24:59 -04:00

92 lines
2.7 KiB
JavaScript

const url = require("url");
const ext = require(`${__dirname}/internal-api`);
const express = require("express");
const app = express();
const fs = require("fs");
const cors = require("cors");
if (!fs.existsSync(`${__dirname}/config.json`)) {
console.log("Please configure your server.");
fs.copyFileSync(`${__dirname}/config.example.json`, `${__dirname}/config.json`)
process.exit();
}
const config = require(`${__dirname}/config.json`);
app.use(cors());
app.use(express.static("static/"));
app.set("view engine", "ejs");
app.listen(process.env.PORT || 3232, "127.0.0.1", function() {
console.log(`YellowCab is live on ${process.env.PORT || 3232}`)
});
app.get("/", function(req, res) {
try {
res.render(`${__dirname}/views/pages/home`);
} catch (error) {
if (err.stack) {
res.render(`pages/error/error-stack`, {err: error.stack, origin: "embed"});
} else {
res.render(`pages/error/error-msg`, {err: (error.message || error), origin: "embed"});
}
}
});
app.get("/gen", function(req, res) {
try {
res.render(`pages/gen`, {base: config.base});
} catch (error) {
if (err.stack) {
res.render(`pages/error/error-stack`, {err: error.stack, origin: "embed"});
} else {
res.render(`pages/error/error-msg`, {err: (error.message || error), origin: "embed"});
}
}
})
app.get("/embed/:service/:username", function(req, res) {
var p = url.parse(req.url, true).query;
if (req.params.service == "fake" && req.params.username == "fake") {
res.render("pages/embed-fake", {params: p, config: config});
} else {
if (parseInt(p["autorefresh"]) < 29) {
res.render(`pages/error/error-msg`, {err: "The autorefresh param must be atleast half a minute (30 seconds).", origin: "embed"});
return;
}
ext.get(req.params.service, req.params.username, async function(err, response) {
if (!err) {
res.render(`pages/embed`, {username: req.params.username, data: response, params: p, config: config});
} else {
if (err.stack) {
res.render(`pages/error/error-stack`, {err: err.stack, origin: "embed"});
} else {
res.render(`pages/error/error-msg`, {err: (err.message || err), origin: "embed"});
}
}
});
}
});
app.get("/api/:service/:username", function(req, res) {
if (req.params.service == "fake" && req.params.username == "fake") {
res.send({success: false, err: "no"});
} else {
ext.get(req.params.service, req.params.username, async function(err, response) {
if (!err) {
res.send({
success: true,
response
});
} else {
res.send({
success: false,
err
});
}
})
}
})
app.get("*", function(req, res) {
res.render("pages/error/error-404");
});