webamp/experiments/skin-database/index.js
2019-11-15 01:27:58 -05:00

103 lines
2.3 KiB
JavaScript

const express = require("express");
const app = express();
const db = require("./db");
const iaItems = db.get("internetArchiveItems");
// const info = require("/Volumes/Mobile Backup/skins/cache/info.json");
const Skins = require("./data/skins");
const port = 3001;
const graphql = require("./graphql").default;
// TODO: Look into 766c4fad9088037ab4839b18292be8b1
// Has huge number of filenames in info.json
app.set("json spaces", 2);
app.get("/", async (req, res) => {
res.send("Hello World!");
});
app.get("/items/:identifier", async (req, res) => {
const { identifier } = req.params;
const item = await iaItems.findOne({ identifier });
if (item == null) {
res.status(404).json();
return;
}
res.json(item);
});
app.get("/skins/:md5", async (req, res) => {
const { md5 } = req.params;
const skin = await Skins.getSkinByMd5(md5);
if (skin == null) {
res.status(404).json();
return;
}
res.json(skin);
});
app.get("/skins/:md5/readme.txt", async (req, res) => {
const { md5 } = req.params;
const readmeText = await Skins.getReadme(md5);
if (readmeText == null) {
// TODO: make this 404
res.send("");
return;
}
res.send(readmeText);
});
app.get("/skins/:md5/screenshot.png", async (req, res) => {
const { md5 } = req.params;
const screenshotUrl = await Skins.getScreenshotUrl(md5);
if (screenshotUrl == null) {
res.status(404).send();
return;
}
res.redirect(301, screenshotUrl);
});
app.get("/skins/:md5/download", async (req, res) => {
const { md5 } = req.params;
const skinUrl = await Skins.getSkinUrl(md5);
if (skinUrl == null) {
res.status(404).send();
return;
}
res.redirect(301, skinUrl);
});
app.use(graphql());
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
async function main() {
return;
/*
const found = 0;
const bulkUpdates = Object.values(info)
.map((skin, i, collection) => {
const { md5, twitterLikes, tweetUrl } = skin;
if (twitterLikes == null && tweetUrl == null) {
return;
}
return {
updateOne: {
filter: { md5 },
update: {
$set: {
tweetUrl,
twitterLikes,
},
},
upsert: true,
},
};
})
.filter(Boolean);
await skins.bulkWrite(bulkUpdates);
console.log("done");
*/
}
main();