/
go-live.js
100 lines (88 loc) · 2.44 KB
/
go-live.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var cors = require("cors");
var fs = require("fs");
var Promise = require("promise");
var fullBookList;
//Promisification
var readFile = Promise.denodeify(fs.readFile);
readFile("full_book_list.json", "utf8")
.then(function (str) {
fullBookList = JSON.parse(str);
});
//Static content rendering
app.use(express.static("./build"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//SERVER SETUP
//CORS resolution
app.use(cors());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "accept, content-type, xrs-tenant-id");
next();
});
//GetBooks calls
app.get("/api/books",function(req, res){
try{
res.status(200);
res.json({
"response": { "status": 200, "message": "success" },
"books" : fullBookList.books.filter(function(book){
return book.shelf !== "none";
})
});
}catch(e){
res.status(500);
res.json({"response": { "status": 500, "message": "fail" },
"error" : e});
}
});
//Request handling
app.put("/api/books/:booksId",function(req, res){
var i = 0;
try{
for(i=0; i<fullBookList.books.length; i++)
if(fullBookList.books[i].id == req.params.booksId){
fullBookList.books[i].shelf = req.body.shelf;
res.json({
"book" : fullBookList.books[i],
"response": { "status": 200, "message": "success" }
});
break;
}
res.status(200);
}catch(e){
res.json({"response": { "status": 500, "message": "fail" },
"error" : e});
res.status(500);
}
});
//Search calls
app.post("/api/search",function(req, res){
if(!req.body.query){
res.status(200);
res.json({"books" : []});
return;
}
try{
res.status(200);
res.json({
"response": { "status": 200, "message": "success" },
"books" : fullBookList.books.filter(function(book){
var title = book.title.toLocaleLowerCase(),
query = req.body.query.toLocaleLowerCase();
return title.indexOf(query) > 1;
})
});
}catch(e){
res.status(500);
res.json({"response": { "status": 500, "message": "fail" },
"error" : e});
}
});
var port = process.env.PORT || 3000
app.listen(port, function() {
console.log("To view your app, open this link in your browser: http://localhost:" + port);
});