Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. var http = require("http");
  2.  
  3. var storage = {
  4. orders: [ { "id": 0, "item" : 2343},
  5. { "id": 1, "item" : 0987},
  6. { "id": 2, "item" : 6333},
  7. { "id": 3, "item" : 6655},
  8. { "id": 4, "item" : 4545},
  9. { "id": 5, "item" : 4444},
  10. { "id": 6, "item" : 2333},
  11. { "id": 7, "item" : 3333},
  12. { "id": 8, "item" : 7654},
  13. { "id": 9, "item" : 6545},
  14. { "id": 10, "item" : 1010},
  15. { "id": 11, "item" : 9090},
  16. { "id": 12, "item" : 0909},
  17. { "id": 13, "item" : 2424},
  18. { "id": 14, "item" : 6553},
  19. { "id": 15, "item" : 1235},
  20. { "id": 16, "item" : 1234},
  21. { "id": 17, "item" : 5235} ],
  22.  
  23. getNumOfOrders : function() {
  24. var num = 0;
  25. for(var i in this.orders) {
  26. num++;
  27. }
  28. return num;
  29. },
  30.  
  31. getOrders : function(page, size, numOfBlocks) {
  32. var data = "";
  33.  
  34. if(page > 0 && page < numOfBlocks + 1) {
  35. var from = (parseInt(page) -1) * parseInt(size);
  36. var to = from + parseInt(size);
  37. if(storage.getNumOfOrders() < to)
  38. to = storage.getNumOfOrders();
  39.  
  40. for(var i=from; i<to; i++) {
  41. data += JSON.stringify(this.orders[i]);
  42. }
  43. return data;
  44. }
  45. }
  46.  
  47. };
  48.  
  49. function createResponse(page, size, res) {
  50. var numOfBlocks = parseInt(Math.ceil(storage.getNumOfOrders() / parseInt(size)));
  51. var linkBegin = "<http://0.0.0.0:8080/orders?page=";
  52. var firstLink = linkBegin + "1&size=" + size + " rel=\"first\">";
  53. var lastLink = linkBegin + numOfBlocks + "&size=" + size + " rel=\"last\">";
  54. var selfLink = linkBegin + page + "&size=" + size + " rel=\"self\">";
  55. if((parseInt(page) + 1) <= numOfBlocks)
  56. var nextLink = linkBegin + (parseInt(page) + 1) + "&size=" + size + " rel\"next\">";
  57. if((parseInt(page) -1) > 0)
  58. var prevLink = linkBegin + (parseInt(page) - 1) + "&size=" + size + " rel\"prev\">";
  59.  
  60. if(!nextLink)
  61. nextLink = "";
  62. if(!prevLink)
  63. prevLink = "";
  64.  
  65. res.writeHead(200, {
  66. "Content-Type": "application/json", "Location":"/orders",
  67. "Link": [selfLink, firstLink, lastLink, prevLink, nextLink]
  68. });
  69. data = storage.getOrders(page, size, numOfBlocks);
  70. if(!data)
  71. data = "";
  72. else
  73. data = JSON.stringify(data);
  74. res.write(data + "\n");
  75. res.end();
  76. }
  77.  
  78. http.createServer(function(req, res) {
  79.  
  80. if(id = req.url.match("^/orders([?])page([=])([0-9]+)([&])size([=])([0-9]+)$")) {
  81. if (req.method == "GET") {
  82. createResponse(id[3], id[6], res);
  83. } else {
  84. res.writeHead(400);
  85. res.write('Method is not supported!\n');
  86. res.end();
  87. }
  88. } else {
  89. res.writeHead(400);
  90. res.write('Bad request!\n');
  91. res.end();
  92. }
  93.  
  94. }).listen(8080, '0.0.0.0', function() {
  95. console.log("Server is running...\n");
  96. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement