From 7e5a8f94b1ea7c437c75f58f41802192a118a2fe Mon Sep 17 00:00:00 2001 From: James Purser Date: Sat, 18 Jun 2022 15:14:44 +1000 Subject: [PATCH] Updated to use Projects, will need to update CMS first --- .gitignore | 2 +- data/external/cms.js | 35 +++++++++++++++++++++++++++++---- data/internal/feed-generator.js | 30 ++++++++++++++++------------ pages/tech-and-disability.js | 15 ++++++++------ 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 799a347..d6b9f3a 100755 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,6 @@ yarn-error.log* #ideaj .idea/ #Feeds -public/feeds/ +public/feed/ public/sitemap* diff --git a/data/external/cms.js b/data/external/cms.js index 12e90c0..bacf189 100755 --- a/data/external/cms.js +++ b/data/external/cms.js @@ -2,7 +2,6 @@ import getConfig from 'next/config' export const getAllPosts = async (filter, page, limit) => { - console.log(filter + " " + page + " " + limit) const { serverRuntimeConfig, publicRuntimeConfig } = getConfig() const qs = require('qs') const qVal = [] @@ -18,17 +17,21 @@ export const getAllPosts = async (filter, page, limit) => { var filters = {} if (filter) { + const tagList = [] + filter.data.forEach(tag => { + console.log(tag) + tagList.push(tag.attributes.Slug) + }) + filters = { tags: { Slug: { - $contains: filter + $in: tagList } } } } - console.log(filter) - const qArray = { sort: ['publishedAt:desc'], pagination: { @@ -86,5 +89,29 @@ export const getAllPodcastSeries = async () => { }) }) + return await res.json() +} + +export const getProjectDetails = async (projectId) => { + const { serverRuntimeConfig } = getConfig() + const qs = require('qs') + const query = qs.stringify({ + filters: { + Slug: { + $eq: projectId + } + }, + populate: '*' + }, { + encodeValuesOnly: true, + }) + + const res = await fetch(serverRuntimeConfig.base_path + `projects?${query}`, { + headers: new Headers({ + 'Authorization': serverRuntimeConfig.strapi_token, + 'Content-Type': 'application/x-www-form-urlencoded' + }) + }) + return await res.json() } \ No newline at end of file diff --git a/data/internal/feed-generator.js b/data/internal/feed-generator.js index 1fd4b55..88d4e62 100755 --- a/data/internal/feed-generator.js +++ b/data/internal/feed-generator.js @@ -1,19 +1,23 @@ import { Feed } from "feed" -import { getAllPodcastSeries, getAllPosts } from "../external/cms" +import { getAllPodcastSeries, getAllPosts, getProjectDetails } from "../external/cms" import fs from "fs" import config from './config' export const generateRssFeed = async (filter) => { - const posts = await getAllPosts(filter); + const project = await getProjectDetails(filter); + + const posts = await getAllPosts(project.data[0].attributes.tags); const siteURL = config.siteURL; const date = new Date(); - const Title = typeof filter === "undefined" ? "Angry Beanie" : filter + const Title = typeof filter === "undefined" ? "Angry Beanie" : project.data[0].attributes.Title - const feedTitle = typeof filter === "undefined" ? "Angry-Beanie" : filter + const Description = typeof filter == "undefined" ? "A place for all my thoughts and projects" : project.data[0].attributes.Description + + const feedTitle = typeof filter === "undefined" ? "Angry-Beanie" : project.data[0].attributes.Slug const author = { @@ -29,7 +33,7 @@ export const generateRssFeed = async (filter) => { title: Title, - description: "A place for all my thoughts and projects", + description: Description, id: siteURL, @@ -47,11 +51,11 @@ export const generateRssFeed = async (filter) => { feedLinks: { - rss2: `${siteURL}/feeds/${feedTitle}-feed.xml`, + rss2: `${siteURL}/feed/${feedTitle}-feed.xml`, - json: `${siteURL}/feeds/${feedTitle}-feed.json`, + json: `${siteURL}/feed/${feedTitle}-feed.json`, - atom: `${siteURL}/feeds/${feedTitle}-atom.xml`, + atom: `${siteURL}/feed/${feedTitle}-atom.xml`, }, @@ -85,13 +89,13 @@ export const generateRssFeed = async (filter) => { }); - fs.mkdirSync("./public/feeds", { recursive: true }); + fs.mkdirSync("./public/feed", { recursive: true }); - fs.writeFileSync(`./public/feeds/${feedTitle}-feed.xml`, feed.rss2()); + fs.writeFileSync(`./public/feed/${feedTitle}-feed.xml`, feed.rss2()); - fs.writeFileSync(`./public/feeds/${feedTitle}-atom.xml`, feed.atom1()); + fs.writeFileSync(`./public/feed/${feedTitle}-atom.xml`, feed.atom1()); - fs.writeFileSync(`./public/feeds/${feedTitle}-feed.json`, feed.json1()); + fs.writeFileSync(`./public/feed/${feedTitle}-feed.json`, feed.json1()); } @@ -185,6 +189,6 @@ export const generatePodcastFeeds = async () => { console.log(feed.rss2()) - fs.writeFileSync(`./public/feeds/${series.attributes.Slug}.xml`, feed.rss2()); + fs.writeFileSync(`./public/feed/${series.attributes.Slug}.xml`, feed.rss2()); }) } diff --git a/pages/tech-and-disability.js b/pages/tech-and-disability.js index dad6336..2c17efe 100755 --- a/pages/tech-and-disability.js +++ b/pages/tech-and-disability.js @@ -2,7 +2,7 @@ import "../components/main" import getConfig from 'next/config' import Layout from "../components/main" import StoryPager from "../components/storypager" -import { getAllPosts } from "../data/external/cms"; +import { getAllPosts, getProjectDetails } from "../data/external/cms"; //import { popStoryPager } from "../data/external/cms" export async function getServerSideProps(context) { @@ -14,7 +14,9 @@ export async function getServerSideProps(context) { const { serverRuntimeConfig, publicRuntimeConfig } = getConfig() - const articles = await getAllPosts('tech-and-disability', page, 5) + const project = await getProjectDetails('tech-and-disability') + + const articles = await getAllPosts(project.data[0].attributes.tags, page, 5) const secres = await fetch(serverRuntimeConfig.base_path + `/api/sections`) const secdata = await secres.json() @@ -22,15 +24,16 @@ export async function getServerSideProps(context) { const pagedata = {'title': 'Tech and Disability'} return { - props: { articles, sections : secdata, pagedata }, // will be passed to the page component as props + props: { articles, sections : secdata, pagedata, project }, // will be passed to the page component as props } } -function News({ articles, sections, pagedata }) { +function Project({ articles, sections, pagedata, project }) { return -

Tech and Disability

+

{project.data[0].attributes.Title}

+
} -export default News \ No newline at end of file +export default Project \ No newline at end of file