Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. var http = require('http')
  2. , fs = require('fs')
  3. , url = require('url')
  4. , path = require('path')
  5.  
  6. // Goal: get this to client
  7. var classes = ['cs573', 'cs4241']
  8. var filtered = ['cs573', 'cs4241']
  9.  
  10. var server = http.createServer (function (req, res) {
  11. var uri = url.parse(req.url);
  12. console.log(uri.pathname);
  13. switch( uri.pathname ) {
  14. case '/':
  15. sendFile(res, 'public/index.html', 'text/html');
  16. break;
  17.  
  18. case '/index.html':
  19. sendFile(res, 'public/index.html', 'text/html');
  20. break;
  21.  
  22. case '/css/main.css':
  23. sendFile(res, 'public/css/main.css', 'text/css');
  24. console.log('sent css!');
  25. break;
  26.  
  27. case '/add':
  28. console.log('Add!')
  29. handleAdd(req);
  30. res.end('done adding');
  31. break;
  32.  
  33. case '/del':
  34. console.log('Del!');
  35. handleDel(req);
  36. res.end('done deleting');
  37. break;
  38.  
  39. case '/filter':
  40. console.log('Filter!');
  41. handleFilter(req);
  42. res.end('done filtering');
  43. break;
  44.  
  45. case '/list':
  46. res.end( JSON.stringify(filtered) );
  47. break;
  48.  
  49. default:
  50. res.end('404 not found');
  51. }
  52. });
  53.  
  54. function applyFilter(filter) {
  55. // filtering
  56. filtered.length = 0;
  57. for (var i=0; i<classes.length; i++) {
  58. console.log('About to filter');
  59. console.log(classes[i]);
  60. console.log(filter);
  61. if (classes[i].toLowerCase().search(filter.toLowerCase()) != -1) {
  62. console.log('match');
  63. filtered.push(classes[i]);
  64. };
  65. }
  66. }
  67.  
  68. function handleAdd(req) {
  69. var chunk = ""
  70. req.on('data', function(data) {
  71. chunk += data;
  72. })
  73. req.on('end', function(data) {
  74. // Note: this is not a great way to access this object.
  75. var obj = chunk.split('=');
  76. classes.push( obj[1] );
  77. applyFilter("");
  78. })
  79. }
  80.  
  81. function handleDel(req) {
  82. // remove the given class from list
  83. var chunk = ""
  84. req.on('data', function(data) {
  85. chunk += data;
  86. })
  87. req.on('end', function(data) {
  88. // Note: this is not a great way to access this object.
  89. var obj = chunk.split('=');
  90. //classes.push( obj[1] );
  91. var index = classes.indexOf(obj[1]);
  92. classes.splice(index, 1);
  93. applyFilter("");
  94. })
  95. }
  96.  
  97. function handleFilter(req) {
  98. // remove the given class from list
  99. var chunk = ""
  100. req.on('data', function(data) {
  101. chunk += data;
  102. })
  103. req.on('end', function(data) {
  104. // Note: this is not a great way to access this object.
  105. var filter = chunk.split('=')[1];
  106. applyFilter(filter);
  107.  
  108. });
  109. }
  110.  
  111. server.listen(8080);
  112. console.log('listening on 8080');
  113.  
  114. // subroutines
  115.  
  116. function sendFile(res, filename, contentType) {
  117. res.writeHead(200, {'Content-type': contentType })
  118.  
  119. var stream = fs.createReadStream(filename)
  120.  
  121. stream.on('data', function(data) {
  122. res.write(data);
  123. })
  124.  
  125. stream.on('end', function(data) {
  126. res.end();
  127. return;
  128. })
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement