Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var http = require("http");
- var storage = {
- orders: [ { "id": 0, "item" : 2343},
- { "id": 1, "item" : 0987},
- { "id": 2, "item" : 6333},
- { "id": 3, "item" : 6655},
- { "id": 4, "item" : 4545},
- { "id": 5, "item" : 4444},
- { "id": 6, "item" : 2333},
- { "id": 7, "item" : 3333},
- { "id": 8, "item" : 7654},
- { "id": 9, "item" : 6545},
- { "id": 10, "item" : 1010},
- { "id": 11, "item" : 9090},
- { "id": 12, "item" : 0909},
- { "id": 13, "item" : 2424},
- { "id": 14, "item" : 6553},
- { "id": 15, "item" : 1235},
- { "id": 16, "item" : 1234},
- { "id": 17, "item" : 5235} ],
- getNumOfOrders : function() {
- var num = 0;
- for(var i in this.orders) {
- num++;
- }
- return num;
- },
- getOrders : function(page, size, numOfBlocks) {
- var data = "";
- if(page > 0 && page < numOfBlocks + 1) {
- var from = (parseInt(page) -1) * parseInt(size);
- var to = from + parseInt(size);
- if(storage.getNumOfOrders() < to)
- to = storage.getNumOfOrders();
- for(var i=from; i<to; i++) {
- data += JSON.stringify(this.orders[i]);
- }
- return data;
- }
- }
- };
- function createResponse(page, size, res) {
- var numOfBlocks = parseInt(Math.ceil(storage.getNumOfOrders() / parseInt(size)));
- var linkBegin = "<http://0.0.0.0:8080/orders?page=";
- var firstLink = linkBegin + "1&size=" + size + " rel=\"first\">";
- var lastLink = linkBegin + numOfBlocks + "&size=" + size + " rel=\"last\">";
- var selfLink = linkBegin + page + "&size=" + size + " rel=\"self\">";
- if((parseInt(page) + 1) <= numOfBlocks)
- var nextLink = linkBegin + (parseInt(page) + 1) + "&size=" + size + " rel\"next\">";
- if((parseInt(page) -1) > 0)
- var prevLink = linkBegin + (parseInt(page) - 1) + "&size=" + size + " rel\"prev\">";
- if(!nextLink)
- nextLink = "";
- if(!prevLink)
- prevLink = "";
- res.writeHead(200, {
- "Content-Type": "application/json", "Location":"/orders",
- "Link": [selfLink, firstLink, lastLink, prevLink, nextLink]
- });
- data = storage.getOrders(page, size, numOfBlocks);
- if(!data)
- data = "";
- else
- data = JSON.stringify(data);
- res.write(data + "\n");
- res.end();
- }
- http.createServer(function(req, res) {
- if(id = req.url.match("^/orders([?])page([=])([0-9]+)([&])size([=])([0-9]+)$")) {
- if (req.method == "GET") {
- createResponse(id[3], id[6], res);
- } else {
- res.writeHead(400);
- res.write('Method is not supported!\n');
- res.end();
- }
- } else {
- res.writeHead(400);
- res.write('Bad request!\n');
- res.end();
- }
- }).listen(8080, '0.0.0.0', function() {
- console.log("Server is running...\n");
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement