WME/aufgabe3/app.js

160 lines
4.3 KiB
JavaScript
Raw Normal View History

2018-12-06 11:21:40 +00:00
// DO NOT CHANGE!
//init app with express, util, body-parser, csv2json
var express = require('express');
var app = express();
var sys = require('util');
var path = require('path');
var bodyParser = require('body-parser');
var Converter = require("csvtojson").Converter;
//register body-parser to handle json from res / req
2018-12-06 11:52:54 +00:00
app.use(bodyParser.json());
2018-12-06 11:21:40 +00:00
//register public dir to serve static files (html, css, js)
2018-12-06 11:52:54 +00:00
app.use(express.static(path.join(__dirname, "public")));
2018-12-06 11:21:40 +00:00
// END DO NOT CHANGE!
/**************************************************************************
****************************** csv2json *********************************
**************************************************************************/
2018-12-06 11:52:54 +00:00
const csv = require('csvtojson')
2018-12-20 19:45:48 +00:00
var json;
2018-12-06 11:52:54 +00:00
csv()
.fromFile("world_data.csv")
.then((jsonObj) => {
2018-12-20 19:45:48 +00:00
json = jsonObj;
2018-12-06 11:52:54 +00:00
})
2018-12-06 11:21:40 +00:00
/**************************************************************************
********************** handle HTTP METHODS ***********************
**************************************************************************/
2018-12-20 19:45:48 +00:00
// ------------------------------ GET ------------------------------
app.get("/items", function (req, res) {
console.log(json);
res.send(json);
});
app.get("/items/:id", function (req, res) {
var requested_id = parseInt(req.params.id);
2018-12-26 09:16:22 +00:00
var answer = ["Err", "No such id " + requested_id + " in database"];
2018-12-20 19:45:48 +00:00
for (var i = 0; i < json.length; i++) {
if (json[i].id == requested_id) {
answer = [json[i]];
}
}
res.send(answer);
});
app.get("/items/:id1/:id2", function (req, res) {
var first_requested_id = parseInt(req.params.id1);
var second_requested_id = parseInt(req.params.id2);
2018-12-26 09:16:22 +00:00
var answer = ["Err", "Range not possible"];
2018-12-20 19:45:48 +00:00
// check that first id is bigger than 0
// and the second one is the bigger one
if (first_requested_id >= 0 && second_requested_id > first_requested_id) {
var enable_push = false;
2018-12-21 08:25:32 +00:00
for (var i; i < json.length; i++) {
2018-12-20 19:45:48 +00:00
// enable push when the first id is found
2018-12-21 08:25:32 +00:00
if (parseInt(json[i].id) == first_requested_id) {
2018-12-20 19:45:48 +00:00
enable_push = true;
}
// push key when enabled
if (enable_push) {
answer.push(json[i]);
}
2018-12-21 08:25:32 +00:00
// break when second id is found
if (parseInt(json[i].id) == second_requested_id) {
2018-12-20 19:45:48 +00:00
break;
}
}
}
res.send(answer);
});
app.get("/properties", function (req, res) {
var answer = [];
for (var key in json[0]) {
answer.push(key);
}
res.send(answer);
});
app.get("/properties/:num", function (req, res) {
let num = parseInt(req.params.num);
2018-12-26 09:16:22 +00:00
var answer = ["Err", "No such property available"];
2018-12-20 19:45:48 +00:00
var i = 0;
for (var key in json[0]) {
if (i == num) {
answer = [key];
break;
}
i++;
}
res.send(answer);
})
// ----------------------------- POST ------------------------------
app.post("/items", function (req, res) {
2018-12-21 08:25:32 +00:00
var new_entry = req.body;
// set id
var last_id = parseInt(json[json.length - 1].id);
new_entry["id"] = (last_id + 1).toString();
// add entry to json
json.push(new_entry);
res.send("Added country " + new_entry.name + " to list!");
2018-12-20 19:45:48 +00:00
});
// ---------------------------- DELETE -----------------------------
app.delete("/items", function (req, res) {
2018-12-21 08:25:32 +00:00
var name = json[json.length - 1].name;
json.splice(-1, 1);
res.send("Deleted last country " + name + "!");
2018-12-20 19:45:48 +00:00
});
app.delete("/items/id", function (req, res) {
2018-12-21 08:25:32 +00:00
var requested_id = parseInt(req.params.id);
2018-12-26 09:16:22 +00:00
var answer = ["Err", "No such id " + requested_id + "in database"];
2018-12-21 08:25:32 +00:00
for (var i = 0; i < json.length; i++) {
if (json[i].id == requested_id) {
json.splice(i, 1);
answer = ["Item " + requested_id + " deleted successfully."];
break;
}
}
2018-12-20 19:45:48 +00:00
res.send(answer);
});
2018-12-06 11:21:40 +00:00
// DO NOT CHANGE!
// bind server to port
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});