Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions mailing-list-api/mailing-lists.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ module.exports = {
"khadar@techtonica.org",
],
};

6 changes: 6 additions & 0 deletions mailing-list-api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "1.0.0",
"license": "CC-BY-SA-4.0",
"description": "You must update this package",
"type": "module",
"scripts": {
"test": "jest"
},
Expand All @@ -16,5 +17,10 @@
"homepage": "https://github.com/CodeYourFuture/CYF-Coursework-Template#readme",
"devDependencies": {
"jest": "^26.6.3"
},
"dependencies": {
"express": "^4.19.2",
"nodemon": "^3.1.0"
}

}
58 changes: 58 additions & 0 deletions mailing-list-api/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import express from "express";
const app = express();
app.use(express.json());

const lists = new Map();
lists.set("staff", ["talea@techtonica.org", "michelle@techtonica.org"]);
lists.set("cohort-h1-2020", [
"ali@techtonica.org",
"humail@techtonica.org",
"khadar@techtonica.org",
]);

app.get("/lists", (req, res) => {
const listsArray = Array.from(lists.keys());
lists
? res.status(200).send({ lists: listsArray })
: res.status(200).send({});
});

app.get("/lists/:name", (req, res) => {
const params = req.params.name;

lists.has(params)
? res.status(200).send({ name: params, members: lists.get(params) })
: res.status(404);
});

app.delete("/lists/:name", (req, res) => {
const params = req.params.name;
lists.delete(params)
? res.status(200).send(`Deleted ${params} successfully!`)

Check failure

Code scanning / SonarCloud

Endpoints should not be vulnerable to reflected cross-site scripting (XSS) attacks

<!--SONAR_ISSUE_KEY:AY93W648zMRAKKOjksrr-->Change this code to not reflect user-controlled data. <p>See more on <a href="https://sonarcloud.io/project/issues?id=CodeYourFuture_Module-Node&issues=AY93W648zMRAKKOjksrr&open=AY93W648zMRAKKOjksrr&pullRequest=186">SonarCloud</a></p>
: res.status(404);
});

app.put("/lists/:name", (req, res) => {
const params = req.params.name;
const body = req.body;

if (params.toLowerCase() !== body.name.toLowerCase()) {
res
.status(400)
.send(

Check failure

Code scanning / SonarCloud

Endpoints should not be vulnerable to reflected cross-site scripting (XSS) attacks

<!--SONAR_ISSUE_KEY:AY93W648zMRAKKOjksrt-->Change this code to not reflect user-controlled data. <p>See more on <a href="https://sonarcloud.io/project/issues?id=CodeYourFuture_Module-Node&issues=AY93W648zMRAKKOjksrt&open=AY93W648zMRAKKOjksrt&pullRequest=186">SonarCloud</a></p>
`Request could not be completed. Path (${params}) & JSON body ("name": ${body.name}) do not match`
);
}

if (lists.has(params)) {
lists.set(params, body.members);
res.send(`List ${params} has been updated`);

Check failure

Code scanning / SonarCloud

Endpoints should not be vulnerable to reflected cross-site scripting (XSS) attacks

<!--SONAR_ISSUE_KEY:AY93W648zMRAKKOjksrs-->Change this code to not reflect user-controlled data. <p>See more on <a href="https://sonarcloud.io/project/issues?id=CodeYourFuture_Module-Node&issues=AY93W648zMRAKKOjksrs&open=AY93W648zMRAKKOjksrs&pullRequest=186">SonarCloud</a></p>
} else {
lists.set(params, body.members);
res.send(`New list ${params} has been created`);

Check failure

Code scanning / SonarCloud

Endpoints should not be vulnerable to reflected cross-site scripting (XSS) attacks

<!--SONAR_ISSUE_KEY:AY93W648zMRAKKOjksru-->Change this code to not reflect user-controlled data. <p>See more on <a href="https://sonarcloud.io/project/issues?id=CodeYourFuture_Module-Node&issues=AY93W648zMRAKKOjksru&open=AY93W648zMRAKKOjksru&pullRequest=186">SonarCloud</a></p>
}
});

const listener = app.listen(3003, () => {
console.log(`Your listening on port ${listener.address().port}`);
});