diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-01-13 18:15:41 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-01-13 18:25:34 +0100 |
| commit | a32f7b146c216f4159f65d5c0b9a7189d31b2f5a (patch) | |
| tree | 29021a84321158e779a404060878e57055b74b84 | |
| parent | 65a4cb6ce9387c52c4274fddde9320baadbf017f (diff) | |
chore: add different feed formats (feed.xml, atom.xml, feed.json)
| -rw-r--r-- | src/pages/atom.xml.tsx | 20 | ||||
| -rw-r--r-- | src/pages/feed.json.tsx | 20 | ||||
| -rw-r--r-- | src/pages/feed.xml.tsx | 20 | ||||
| -rw-r--r-- | src/utils/helpers/rss.ts | 3 |
4 files changed, 61 insertions, 2 deletions
diff --git a/src/pages/atom.xml.tsx b/src/pages/atom.xml.tsx new file mode 100644 index 0000000..e6908bd --- /dev/null +++ b/src/pages/atom.xml.tsx @@ -0,0 +1,20 @@ +import { generateFeed } from '@utils/helpers/rss'; +import { GetServerSideProps } from 'next'; + +const Feed = () => null; + +export const getServerSideProps: GetServerSideProps = async ({ res }) => { + const feed = await generateFeed(); + + if (res) { + res.setHeader('Content-Type', 'text/xml'); + res.write(`${feed.atom1()}`); + res.end(); + } + + return { + props: {}, + }; +}; + +export default Feed; diff --git a/src/pages/feed.json.tsx b/src/pages/feed.json.tsx new file mode 100644 index 0000000..e113b46 --- /dev/null +++ b/src/pages/feed.json.tsx @@ -0,0 +1,20 @@ +import { generateFeed } from '@utils/helpers/rss'; +import { GetServerSideProps } from 'next'; + +const Feed = () => null; + +export const getServerSideProps: GetServerSideProps = async ({ res }) => { + const feed = await generateFeed(); + + if (res) { + res.setHeader('Content-Type', 'application/json'); + res.write(`${feed.json1()}`); + res.end(); + } + + return { + props: {}, + }; +}; + +export default Feed; diff --git a/src/pages/feed.xml.tsx b/src/pages/feed.xml.tsx new file mode 100644 index 0000000..093cab8 --- /dev/null +++ b/src/pages/feed.xml.tsx @@ -0,0 +1,20 @@ +import { generateFeed } from '@utils/helpers/rss'; +import { GetServerSideProps } from 'next'; + +const Feed = () => null; + +export const getServerSideProps: GetServerSideProps = async ({ res }) => { + const feed = await generateFeed(); + + if (res) { + res.setHeader('Content-Type', 'text/xml'); + res.write(`${feed.rss2()}`); + res.end(); + } + + return { + props: {}, + }; +}; + +export default Feed; diff --git a/src/utils/helpers/rss.ts b/src/utils/helpers/rss.ts index 42560cb..3e7258a 100644 --- a/src/utils/helpers/rss.ts +++ b/src/utils/helpers/rss.ts @@ -2,7 +2,6 @@ import { config } from '@config/website'; import { getPublishedPosts } from '@services/graphql/queries'; import { ArticlePreview } from '@ts/types/articles'; import { Feed } from 'feed'; -import { writeFileSync } from 'fs'; const getAllPosts = async (): Promise<ArticlePreview[]> => { const posts: ArticlePreview[] = []; @@ -50,5 +49,5 @@ export const generateFeed = async () => { }); }); - writeFileSync('./public/feed.xml', feed.rss2(), 'utf8'); + return feed; }; |
