diff options
| author | Fuwn <[email protected]> | 2024-01-19 04:29:47 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-19 04:29:47 -0800 |
| commit | b6188fe6ee4bd08ec73ab99167af213bec5ecb31 (patch) | |
| tree | a0801694c09bb6bc15d01c114abf37af88e46b61 | |
| parent | feat(index): example links to example (diff) | |
| download | counter-b6188fe6ee4bd08ec73ab99167af213bec5ecb31.tar.xz counter-b6188fe6ee4bd08ec73ab99167af213bec5ecb31.zip | |
feat(index): only 6 places
| -rw-r--r-- | index.js | 142 |
1 files changed, 73 insertions, 69 deletions
@@ -1,125 +1,129 @@ -'use strict' +"use strict"; -const fs = require('fs') -const config = require('config-yml') -const express = require('express') -const compression = require('compression') +const fs = require("fs"); +const config = require("config-yml"); +const express = require("express"); +const compression = require("compression"); -const db = require('./db') -const themify = require('./utils/themify') +const db = require("./db"); +const themify = require("./utils/themify"); -const PLACES = 7 +const PLACES = 6; -const app = express() +const app = express(); -app.use(express.static('assets')) -app.use(compression()) -app.set('view engine', 'pug') +app.use(express.static("assets")); +app.use(compression()); +app.set("view engine", "pug"); -app.get('/', (req, res) => { - const site = config.app.site || `${req.protocol}://${req.get('host')}` - res.render('index', { site }) +app.get("/", (req, res) => { + const site = config.app.site || `${req.protocol}://${req.get("host")}`; + res.render("index", { site }); }); // get the image -app.get('/get/@:name', async (req, res) => { - const { name } = req.params - const { theme = 'moebooru' } = req.query - let length = PLACES +app.get("/get/@:name", async (req, res) => { + const { name } = req.params; + const { theme = "moebooru" } = req.query; + let length = PLACES; - // This helps with GitHub's image cache + // This helps with GitHub's image cache res.set({ - 'content-type': 'image/svg+xml', - 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate' - }) + "content-type": "image/svg+xml", + "cache-control": "max-age=0, no-cache, no-store, must-revalidate", + }); - const data = await getCountByName(name) + const data = await getCountByName(name); - if (name === 'demo') { + if (name === "demo") { res.set({ - 'cache-control': 'max-age=31536000' - }) - length = 10 + "cache-control": "max-age=31536000", + }); + length = 10; } // Send the generated SVG as the result - const renderSvg = themify.getCountImage({ count: data.num, theme, length }) - res.send(renderSvg) - - console.log(data, `theme: ${theme}`, `ref: ${req.get('Referrer') || null}`, `ua: ${req.get('User-Agent') || null}`) -}) + const renderSvg = themify.getCountImage({ count: data.num, theme, length }); + res.send(renderSvg); + + console.log( + data, + `theme: ${theme}`, + `ref: ${req.get("Referrer") || null}`, + `ua: ${req.get("User-Agent") || null}` + ); +}); // JSON record -app.get('/record/@:name', async (req, res) => { - const { name } = req.params +app.get("/record/@:name", async (req, res) => { + const { name } = req.params; - const data = await getCountByName(name) + const data = await getCountByName(name); - res.json(data) -}) + res.json(data); +}); -app.get('/heart-beat', (req, res) => { +app.get("/heart-beat", (req, res) => { res.set({ - 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate' - }) + "cache-control": "max-age=0, no-cache, no-store, must-revalidate", + }); - res.send('alive') - console.log('heart-beat') + res.send("alive"); + console.log("heart-beat"); }); const listener = app.listen(config.app.port || 3000, () => { - console.log('Your app is listening on port ' + listener.address().port) -}) + console.log("Your app is listening on port " + listener.address().port); +}); -let __cache_counter = {}, shouldPush = false +let __cache_counter = {}, + shouldPush = false; setInterval(() => { - shouldPush = true + shouldPush = true; }, 1000 * 60); async function pushDB() { - if (!shouldPush) return + if (!shouldPush) return; try { - shouldPush = false - if (Object.keys(__cache_counter).length === 0) return + shouldPush = false; + if (Object.keys(__cache_counter).length === 0) return; - console.log("pushDB", __cache_counter) + console.log("pushDB", __cache_counter); - const counters = Object.keys(__cache_counter).map(key => { + const counters = Object.keys(__cache_counter).map((key) => { return { name: key, - num: __cache_counter[key] - } - }) + num: __cache_counter[key], + }; + }); - await db.setNumMulti(counters) - __cache_counter = {} + await db.setNumMulti(counters); + __cache_counter = {}; } catch (error) { - console.log("pushDB is error: ", error) + console.log("pushDB is error: ", error); } } async function getCountByName(name) { - const defaultCount = { name, num: 0 } + const defaultCount = { name, num: 0 }; - if (name === 'demo') return { name, num: '0123456789' } + if (name === "demo") return { name, num: "0123456789" }; try { if (!(name in __cache_counter)) { - const counter = await db.getNum(name) || defaultCount - __cache_counter[name] = counter.num + 1 + const counter = (await db.getNum(name)) || defaultCount; + __cache_counter[name] = counter.num + 1; } else { - __cache_counter[name]++ + __cache_counter[name]++; } - pushDB() - - return { name, num: __cache_counter[name] } + pushDB(); + return { name, num: __cache_counter[name] }; } catch (error) { - console.log("get count by name is error: ", error) - return defaultCount - + console.log("get count by name is error: ", error); + return defaultCount; } } |