diff options
author | Raphael Kabo <raphaelkabo@hey.com> | 2024-02-26 12:09:46 +0000 |
---|---|---|
committer | Raphael Kabo <raphaelkabo@hey.com> | 2024-02-26 12:09:46 +0000 |
commit | c93fd6e2d455ea4208f9e5ca6bfbd1c0e9fd1ad9 (patch) | |
tree | 8baed2c232b629a98b21006adf440f6f83d5da57 /src/routes/activitypub.ts | |
parent | 363cfbae076f4494ddd5fddcf03de622f6247051 (diff) |
refactor: allow Cypress to override config
Diffstat (limited to 'src/routes/activitypub.ts')
-rw-r--r-- | src/routes/activitypub.ts | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/src/routes/activitypub.ts b/src/routes/activitypub.ts index 667a44f..fc61dd7 100644 --- a/src/routes/activitypub.ts +++ b/src/routes/activitypub.ts @@ -1,21 +1,22 @@ import { Router, Request, Response, NextFunction } from "express"; import { createFeaturedPost, createWebfinger } from "../activitypub.js"; import { acceptsActivityPub } from "../lib/activitypub.js"; -import getConfig, { frontendConfig } from "../lib/config.js"; +import { frontendConfig } from "../lib/config.js"; import Event from "../models/Event.js"; import { addToLog } from "../helpers.js"; - -const config = getConfig(); +import { getConfigMiddleware } from "../lib/middleware.js"; const router = Router(); +router.use(getConfigMiddleware); + const send404IfNotFederated = ( req: Request, res: Response, next: NextFunction, ) => { - if (!config.general.is_federated) { - return res.status(404).render("404", frontendConfig()); + if (!res.locals.config?.general.is_federated) { + return res.status(404).render("404", frontendConfig(res)); } next(); }; @@ -27,7 +28,7 @@ router.get("/:eventID/featured", (req: Request, res: Response) => { const { eventID } = req.params; const featured = { "@context": "https://www.w3.org/ns/activitystreams", - id: `https://${config.general.domain}/${eventID}/featured`, + id: `https://${res.locals.config?.general.domain}/${eventID}/featured`, type: "OrderedCollection", orderedItems: [createFeaturedPost(eventID)], }; @@ -41,17 +42,17 @@ router.get("/:eventID/featured", (req: Request, res: Response) => { // return the JSON for a given activitypub message router.get("/:eventID/m/:hash", async (req: Request, res: Response) => { const { hash, eventID } = req.params; - const id = `https://${config.general.domain}/${eventID}/m/${hash}`; + const id = `https://${res.locals.config?.general.domain}/${eventID}/m/${hash}`; try { const event = await Event.findOne({ id: eventID, }); if (!event) { - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } else { if (!event.activityPubMessages) { - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } const message = event.activityPubMessages.find( (el) => el.id === id, @@ -68,7 +69,7 @@ router.get("/:eventID/m/:hash", async (req: Request, res: Response) => { ); } } else { - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } } } catch (err) { @@ -80,19 +81,19 @@ router.get("/:eventID/m/:hash", async (req: Request, res: Response) => { " failed with error: " + err, ); - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } }); router.get("/.well-known/nodeinfo", (req, res) => { - if (!config.general.is_federated) { - return res.status(404).render("404", frontendConfig()); + if (!res.locals.config?.general.is_federated) { + return res.status(404).render("404", frontendConfig(res)); } const nodeInfo = { links: [ { rel: "http://nodeinfo.diaspora.software/ns/schema/2.2", - href: `https://${config.general.domain}/.well-known/nodeinfo/2.2`, + href: `https://${res.locals.config?.general.domain}/.well-known/nodeinfo/2.2`, }, ], }; @@ -105,13 +106,13 @@ router.get("/.well-known/nodeinfo", (req, res) => { router.get("/.well-known/nodeinfo/2.2", async (req, res) => { const eventCount = await Event.countDocuments(); - if (!config.general.is_federated) { - return res.status(404).render("404", frontendConfig()); + if (!res.locals.config?.general.is_federated) { + return res.status(404).render("404", frontendConfig(res)); } const nodeInfo = { version: "2.2", instance: { - name: config.general.site_name, + name: res.locals.config?.general.site_name, description: "Federated, no-registration, privacy-respecting event hosting.", }, @@ -157,16 +158,24 @@ router.get("/.well-known/webfinger", async (req, res) => { const event = await Event.findOne({ id: eventID }); if (!event) { - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } else { if (acceptsActivityPub(req)) { res.header( "Content-Type", "application/activity+json", - ).send(createWebfinger(eventID, config.general.domain)); + ).send( + createWebfinger( + eventID, + res.locals.config?.general.domain, + ), + ); } else { res.header("Content-Type", "application/json").send( - createWebfinger(eventID, config.general.domain), + createWebfinger( + eventID, + res.locals.config?.general.domain, + ), ); } } @@ -176,7 +185,7 @@ router.get("/.well-known/webfinger", async (req, res) => { "error", `Attempt to render webfinger for ${resource} failed with error: ${err}`, ); - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } } }); @@ -192,13 +201,13 @@ router.get("/:eventID/followers", async (req, res) => { let followersCollection = { type: "OrderedCollection", totalItems: followers.length, - id: `https://${config.general.domain}/${eventID}/followers`, + id: `https://${res.locals.config?.general.domain}/${eventID}/followers`, first: { type: "OrderedCollectionPage", totalItems: followers.length, - partOf: `https://${config.general.domain}/${eventID}/followers`, + partOf: `https://${res.locals.config?.general.domain}/${eventID}/followers`, orderedItems: followers, - id: `https://${config.general.domain}/${eventID}/followers?page=1`, + id: `https://${res.locals.config?.general.domain}/${eventID}/followers?page=1`, }, "@context": ["https://www.w3.org/ns/activitystreams"], }; @@ -221,7 +230,7 @@ router.get("/:eventID/followers", async (req, res) => { "error", `Attempt to render followers for ${eventID} failed with error: ${err}`, ); - return res.status(404).render("404", frontendConfig()); + return res.status(404).render("404", frontendConfig(res)); } }); |