1
0
mirror of https://git.sr.ht/~cadence/bibliogram synced 2025-12-14 10:35:07 +00:00

New constants/config merge system

This commit is contained in:
Cadence Fish
2020-01-28 16:14:21 +13:00
parent fb6081a719
commit cf8fd6b86b
8 changed files with 43 additions and 9 deletions

View File

@@ -4,9 +4,9 @@ const {extractSharedData} = require("./utils/body")
const {TtlCache, RequestCache} = require("./cache")
require("./testimports")(constants, request, extractSharedData, RequestCache)
const requestCache = new RequestCache(constants.resource_cache_time)
const requestCache = new RequestCache(constants.caching.resource_cache_time)
/** @type {import("./cache").TtlCache<import("./structures/TimelineEntry")>} */
const timelineEntryCache = new TtlCache(constants.resource_cache_time)
const timelineEntryCache = new TtlCache(constants.caching.resource_cache_time)
function fetchUser(username) {
return requestCache.getOrFetch("user/"+username, () => {
@@ -39,6 +39,7 @@ function fetchTimelinePage(userID, after) {
}))
return requestCache.getOrFetchPromise("page/"+after, () => {
return request(`https://www.instagram.com/graphql/query/?${p.toString()}`).then(res => res.json()).then(root => {
if (!root.data) console.error("missing data:", root) //todo: please make this better.
/** @type {import("./types").PagedEdges<import("./types").TimelineEntryN2>} */
const timeline = root.data.user.edge_owner_to_timeline_media
return timeline

View File

@@ -1,7 +1,20 @@
module.exports = {
image_cache_control: `public, max-age=${7*24*60*60}`,
resource_cache_time: 30*60*1000,
/*
Welcome to the constants file!
Copy a key and provide a new value in /config.js to override the value here.
Please read the comments above every section!
*/
let constants = {
// Things that server owners _should_ change!
website_origin: "http://localhost:10407",
// Things that server owners _could_ change if they want to.
caching: {
image_cache_control: `public, max-age=${7*24*60*60}`,
resource_cache_time: 30*60*1000
},
// Instagram uses this stuff. This shouldn't be changed, except to fix a bug that hasn't yet been fixed upstream.
external: {
timeline_query_hash: "e769aa130647d2354c40ea6a439bfc08",
shortcode_query_hash: "2b0673e0dc4580674a88d426fe00ea90",
@@ -10,6 +23,7 @@ module.exports = {
shortcode_regex: "[\\w-]+"
},
// My code uses this stuff. Server owners have no reason to change it.
symbols: {
NO_MORE_PAGES: Symbol("NO_MORE_PAGES"),
TYPE_IMAGE: Symbol("TYPE_IMAGE"),
@@ -21,3 +35,9 @@ module.exports = {
NO_SHARED_DATA: Symbol("NO_SHARED_DATA")
}
}
// Override values from config and export the result
const md = require("mixin-deep")
const config = require("../../config")
constants = md(constants, config)
module.exports = constants

View File

@@ -18,7 +18,7 @@ class User {
}
getTtl(scale = 1) {
const expiresAt = this.cachedAt + constants.resource_cache_time
const expiresAt = this.cachedAt + constants.caching.resource_cache_time
const ttl = expiresAt - Date.now()
return Math.ceil(Math.max(ttl, 0) / scale)
}

View File

@@ -33,7 +33,7 @@ module.exports = [
statusCode: 200,
contentType: "image/jpeg",
headers: {
"Cache-Control": constants.image_cache_control
"Cache-Control": constants.caching.image_cache_control
},
stream: image.stream("jpg")
}
@@ -54,7 +54,7 @@ module.exports = [
})
} else {
return proxy(url, {
"Cache-Control": constants.image_cache_control
"Cache-Control": constants.caching.image_cache_control
})
}
}}

View File

@@ -1,5 +1,6 @@
const {instance, pugCache, wss} = require("./passthrough")
const {requestCache, timelineEntryCache} = require("../lib/collectors")
const constants = require("../lib/constants")
const util = require("util")
const repl = require("repl")
const vm = require("vm")