Skip to content

Commit

Permalink
Merge pull request #324 from ashik-75/work
Browse files Browse the repository at this point in the history
Add Serverless function for RSS feed and fix issue
  • Loading branch information
lifeparticle authored Sep 21, 2023
2 parents ae089ee + 40810f7 commit 10598f6
Show file tree
Hide file tree
Showing 16 changed files with 2,090 additions and 36 deletions.
4 changes: 4 additions & 0 deletions api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
.env

.yarn
1 change: 0 additions & 1 deletion api/neswfeed/index.ts

This file was deleted.

1 change: 1 addition & 0 deletions api/newsfeed/.yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: "node-modules"
49 changes: 49 additions & 0 deletions api/newsfeed/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import express from "express";
import axios from "axios";

const app = express();

app.use((req, res, next) => {
const environment = process.env.NODE_ENV || "development";
let origin =
environment === "development" ? "*" : "https://www.binarytree.dev";
res.header("Access-Control-Allow-Origin", origin);
next();
});

app.get("/", (req, res) => {
res.json({
message: "Generate rss feed from our domain",
});
});

app.get("/rss", async (req, res) => {
try {
const sitename = req.query.name;
const sites = {
"frontend-focus": "https://cprss.s3.amazonaws.com/frontendfoc.us.xml",
"status-code": "https://cprss.s3.amazonaws.com/react.statuscode.com.xml",
};
const response = await axios.get(sites[sitename], {
responseType: "arraybuffer",
});

if (response.status !== 200) {
throw new Error("Failed to fetch the Medium RSS feed");
}

res.set("Content-Type", "application/xml");

res.send(response.data);
} catch (error) {
if (error instanceof Error) {
res.status(500).json({ type: "error", message: error.message });
} else {
res.status(500).json({ message: "Something went wrong" });
}
}
});

const PORT = 5000;

app.listen(PORT, () => console.log(`Listening on port ${PORT}`));
24 changes: 24 additions & 0 deletions api/newsfeed/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "newsfeed",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon index.js",
"start": "node index.js",
"vercel-build": "echo helllo"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^1.5.0",
"express": "^4.18.2",
"rss-parser": "^3.13.0"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}
15 changes: 15 additions & 0 deletions api/newsfeed/vercel.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "index.js"
}
]
}
Loading

0 comments on commit 10598f6

Please sign in to comment.