From e6fbcd4b891a935b895dd5f4f930d263461c70e7 Mon Sep 17 00:00:00 2001 From: wgroeneveld Date: Wed, 10 Mar 2021 09:00:19 +0100 Subject: [PATCH] add relativeTarget to easily parse on Hugo side --- README.md | 2 ++ src/config.js | 3 --- src/webmention/get.js | 5 +++-- test/webmention/get.test.js | 15 ++++++++++++--- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d68502d..a7ac346 100644 --- a/README.md +++ b/README.md @@ -150,3 +150,5 @@ In cooperation with https://github.com/wgroeneveld/serve-my-jams #### 5.1 `getWebmentions` Calls the get webmention endpoint, sorts by date, adds metadata such as relative date (`x days ago`, property `publishedFromNow`), and returns data. Could be written in a `data` folder for Hugo to parse, for example. + +Parameters: just one, the `domain`. diff --git a/src/config.js b/src/config.js index ed317c3..e79dc1b 100644 --- a/src/config.js +++ b/src/config.js @@ -1,5 +1,4 @@ -const serveMyJamDomain = "brainbaking.com" const serveMyJamToken = "miauwkes" const serveMyJamEndpoint = "https://jam.brainbaking.com" @@ -8,7 +7,5 @@ const serveMyJamEndpoint = "https://jam.brainbaking.com" // don't care if token is visible, just an extra security-by-obscurity step, everything is public anyway module.exports = { serveMyJamEndpoint, - - serveMyJamDomain, serveMyJamToken } diff --git a/src/webmention/get.js b/src/webmention/get.js index 0743ab7..27bf078 100644 --- a/src/webmention/get.js +++ b/src/webmention/get.js @@ -6,12 +6,13 @@ const dayjs = require('dayjs') const relativeTime = require('dayjs/plugin/relativeTime') dayjs.extend(relativeTime) -async function getWebmentions() { - const url = `${config.serveMyJamEndpoint}/webmention/${config.serveMyJamDomain}/${config.serveMyJamToken}` +async function getWebmentions(domain) { + const url = `${config.serveMyJamEndpoint}/webmention/${domain}/${config.serveMyJamToken}` const result = await got(url) result.body.json.forEach(mention => { mention.publishedFromNow = dayjs(mention.published).fromNow() + mention.relativeTarget = mention.target.substring(mention.target.indexOf(domain) + domain.length, mention.target.length) }) return result.body.json.sort((a, b) => dayjs(b.published).toDate() - dayjs(a.published).toDate()) diff --git a/test/webmention/get.test.js b/test/webmention/get.test.js index 2a1b399..cb82cac 100644 --- a/test/webmention/get.test.js +++ b/test/webmention/get.test.js @@ -5,15 +5,24 @@ const dayjs = require('dayjs') describe("webmention receive serve-my-jam tests", () => { const { getWebmentions } = require('./../../src/webmention/get') + const domain = "brainbaking.com" MockDate.set(dayjs('2021-03-11T19:00:00').toDate()) test("getWebmentions fetches from serve-my-jam depending on config", async () => { - const result = await getWebmentions() + const result = await getWebmentions(domain) expect(result.length).toBe(4) }) + test("getWebmentions enriches data with relatiave url", async () => { + const result = await getWebmentions(domain) + const mention = result[0] + + expect(mention.relativeTarget).toEqual("/post/2021/02/my-retro-desktop-setup/") + expect(mention.target).toEqual("https://brainbaking.com/post/2021/02/my-retro-desktop-setup/") + }) + test("getWebmentions enriches data with fromNow data", async () => { - const result = await getWebmentions() + const result = await getWebmentions(domain) const mention = result[0] expect(mention.published).toEqual("2021-03-08T18:35:24") @@ -21,7 +30,7 @@ describe("webmention receive serve-my-jam tests", () => { }) test("getWebmentions are sorted by published date descending", async() => { - const result = await getWebmentions() + const result = await getWebmentions(domain) expect(result[0].published).toEqual("2021-03-08T18:35:24") expect(result[1].published).toEqual("2021-03-08T17:14:25")