UNPKG

gatsby-source-tribe-events

Version:

Gatsby source plugin to add WordPress Events Calendar nodes.

53 lines (43 loc) 1.55 kB
const axios = require("axios"); exports.sourceNodes = async ( { actions, createNodeId, createContentDigest }, options ) => { const { baseUrl, maxEvents = 10 } = options; const resultEvents = await tribeGetResults(baseUrl, "events", maxEvents); tribeCreateNode(resultEvents.data.events, "TribeEvents"); const resultVenues = await tribeGetResults(baseUrl, "venues", 50); tribeCreateNode(resultVenues.data.venues, "TribeVenues"); const resultOrganizers = await tribeGetResults(baseUrl, "organizers", 50); tribeCreateNode(resultOrganizers.data.organizers, "TribeOrganizers"); const resultCategories = await tribeGetResults(baseUrl, "categories", 50); tribeCreateNode(resultCategories.data.categories, "TribeCategories"); const resultTags = await tribeGetResults(baseUrl, "tags", 50); tribeCreateNode(resultTags.data.tags, "TribeTags"); async function tribeGetResults(baseUrl, endPoint, perPage) { result = await axios({ method: "GET", url: baseUrl + "/wp-json/tribe/events/v1/" + endPoint, params: { per_page: perPage } }).catch(error => { console.error(error.message); }); return result; } function tribeCreateNode(result, tribeType) { /* result should equal result.data.tags */ result.forEach(r => { const node = { ...r, id: createNodeId(`${tribeType}-${r.id}`), internal: { type: tribeType, contentDigest: createContentDigest(r) } }; actions.createNode(node); }); } };