Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. var fs = require('fs'); // operowanie na plikach
  2. var http = require('http'); // obsługa http
  3. var path = require('path'); // składanie ścierzek
  4. var mime = require('mime'); // zamienia rozszerzenie plików na content type
  5. var mongo = require("mongodb").MongoClient;
  6. var ObjectId = require("mongodb").ObjectId;
  7.  
  8. var debugLog = true; // turning on logging to the console
  9.  
  10. mongo.connect("mongodb://localhost:27017", function(err, conn) {
  11. if(err) {
  12. console.log("Connection failed: " + err);
  13. return;
  14. }
  15. var db = conn.db("bank");
  16. var accounts = db.collection("accounts");
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. function serveFile(rep, fileName, errorCode, message) {
  24.  
  25. if(debugLog) console.log('Serving file ' + fileName + (message ? ' with message \'' + message + '\'': ''));
  26.  
  27. fs.readFile(fileName, function(err, data) {
  28. if(err) {
  29. serveError(rep, 404, 'Document ' + fileName + ' not found');
  30. } else {
  31. rep.writeHead(errorCode, message, { 'Content-Type': mime.getType(path.basename(fileName)) });
  32. if(message) {
  33. data = data.toString().replace('{errMsg}', rep.statusMessage).replace('{errCode}', rep.statusCode);
  34. }
  35. rep.end(data);
  36. }
  37. });
  38. }
  39.  
  40. function serveError(rep, error, message) {
  41. serveFile(rep, 'html/error.html', error, message);
  42. }
  43.  
  44. var listeningPort = 8888;
  45. http.createServer().on('request', function (req, rep) {
  46.  
  47. if(debugLog) console.log('HTTP request URL: ' + req.url);
  48.  
  49. switch(req.url) {
  50. case '/':
  51. serveFile(rep, 'html/index.html', 200, '');
  52. break;
  53. case '/favicon.ico':
  54. serveFile(rep, 'img/favicon.ico', 200, '');
  55. break;
  56. case '/konto':
  57. switch (req.method){
  58. case 'GET':
  59. rep.writeHead(200,'OK',{'Content-type':'application/json'});
  60.  
  61.  
  62. accounts.findOne({ _id: ObjectId("5aae479024c63d156e2c6acf") }, function(err, konto) {
  63. rep.end(JSON.stringify(konto));
  64. });
  65.  
  66.  
  67. break;
  68. case 'POST':
  69. var data = '';
  70. req.on('data', function (part) {
  71. data += part;
  72. }).on('end', function () {
  73. var arg = JSON.parse(data);
  74. konto.saldo += arg.kwota;
  75. rep.writeHead(200, 'OK', {'Content-type': 'application/json'});
  76. rep.end(JSON.stringify(konto));
  77. });
  78. break;
  79. default:
  80. rep.writeHead(501,'Not implemeted',{'Content-type':'application/json'});
  81. rep.end(JSON.stringify({error : "Not implemented"}));
  82. }
  83. break;
  84. default:
  85. if(/^\/(html|css|js|fonts|img)\//.test(req.url)) {
  86. var fileName = path.normalize('./' + req.url)
  87. serveFile(rep, fileName, 200, '');
  88. } else {
  89. serveError(rep, 403, 'Access denied');
  90. }
  91. }
  92. }
  93. ).listen(listeningPort);
  94. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement