add relativeTarget to easily parse on Hugo side
This commit is contained in:
parent
0ff54d8a7b
commit
e6fbcd4b89
|
@ -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`.
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue