Pārlūkot izejas kodu

Big refactoring effort to use a route manager and separate files for each API route.

Matt Coles 9 gadi atpakaļ
vecāks
revīzija
cb44d25441
5 mainītis faili ar 122 papildinājumiem un 87 dzēšanām
  1. 2 87
      index.js
  2. 13 0
      route-manager.js
  3. 10 0
      routes/helloworld.js
  4. 63 0
      routes/login.js
  5. 34 0
      routes/register.js

+ 2 - 87
index.js

@@ -1,9 +1,7 @@
1 1
 var express = require('express');
2 2
 var https = require('https');
3 3
 var app = express();
4
-var bcrypt = require('bcrypt-nodejs');
5
-var Redis = require('ioredis');
6
-var redis = new Redis();
4
+var route_manager = require("./route-manager.js");
7 5
 var bodyParser = require('body-parser');
8 6
 var fs = require('fs');
9 7
 var prkey = fs.readFileSync('server.key');
@@ -11,90 +9,7 @@ var certi = fs.readFileSync('server.crt');
11 9
 
12 10
 app.use(bodyParser.json()); // for parsing application/json
13 11
 app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
14
-
15
-app.get('/hello/(:name)?', function (req, res) {
16
-  var name = req.params.name || "World";
17
-  res.send('<title>Hello ' + name + '!</title>' + 'Hello ' + name + "!");
18
-});
19
-
20
-app.all('/register', function (req, res) {
21
-  var tmp_username = req.body.user || req.query.user;
22
-  var tmp_password = req.body.password || req.query.password;
23
-  tmp_username = tmp_username.toLowerCase();
24
-  var uquery       = 'user:' + tmp_username;
25
-  var user_object  = {};
26
-
27
-  redis.hgetall(uquery).then(function (result) {
28
-    if (result.password && result !== undefined && result !== null) {
29
-      res.send({"registered": 0,
30
-               "error": 1});
31
-    } else {
32
-      bcrypt.hash(tmp_password, null, null, function (err, hash) {
33
-        user_object["password"] = hash;
34
-        user_object["auth-key"] = bcrypt.hashSync(Date.now().toString() + tmp_username);
35
-        redis.hset(uquery, "password", user_object.password);
36
-        redis.hset(uquery, "auth-key", user_object["auth-key"]);
37
-        res.send({"registered": 1,
38
-                 "auth-key": user_object["auth-key"],
39
-                 "error": 0});
40
-      });
41
-    }
42
-  });
43
-});
44
-
45
-app.all('/login', function(req, res) {
46
-  var username = req.body.user || req.query.user;
47
-  username = username.toLowerCase();
48
-  var password = req.body.password || req.query.password;
49
-  var auth_key = req.body.auth_key || req.query.auth_key;
50
-  var uquery   = 'user:' + username;
51
-
52
-  redis.hgetall(uquery).then(function (result) {
53
-    if (result.password && result !== undefined && result !== null) {
54
-      var user_object = result;
55
-      if (auth_key !== "" && auth_key !== undefined && auth_key !== null) {
56
-        if (auth_key === user_object["auth-key"]) {
57
-          var timestamp_user = Date.now().toString() + username;
58
-          user_object["auth-key"] = bcrypt.hashSync(timestamp_user);
59
-          redis.set(uquery, "auth-key", user_object["auth-key"]);
60
-          res.send({"logged_in": 1,
61
-                   "auth-key": user_object["auth-key"],
62
-                   "error": 0});
63
-        } else {
64
-          res.send({"logged_in": 0,
65
-                   "error": 3});
66
-        }
67
-      } else {
68
-        bcrypt.compare(password, user_object["password"], function (err, matched) {
69
-          if (matched === true) {
70
-            if (undefined === user_object["auth-key"]) {
71
-              var timestamp_user = Date.now().toString() + username;
72
-              user_object["auth-key"] = bcrypt.hashSync(timestamp_user);
73
-              redis.set(uquery, JSON.stringify(user_object));
74
-              res.send({"logged_in": 1,
75
-                       "auth-key": user_object["auth-key"],
76
-                       "error": 0});
77
-            } else {
78
-              res.send({"logged_in": 1,
79
-                       "auth-key": user_object["auth-key"],
80
-                       "error": 0});
81
-            }
82
-            return;
83
-          } else {
84
-            res.send({"logged_in": 0,
85
-                     "error": 2});
86
-                     return;
87
-          }
88
-        });
89
-
90
-      }
91
-    } else {
92
-      res.send({"logged_in": 0,
93
-               "error": 1});
94
-               return;
95
-    }
96
-  });
97
-});
12
+app.use('/', route_manager);
98 13
 
99 14
 // app.listen(3000, function () {
100 15
 //     console.log('Example app listening on port 3000!');

+ 13 - 0
route-manager.js

@@ -0,0 +1,13 @@
1
+var express = require("express");
2
+var router = express.Router();
3
+var hello = require("./routes/helloworld.js");
4
+var register = require("./routes/register.js");
5
+var login = require("./routes/login.js");
6
+
7
+module.exports = router;
8
+
9
+router.get('/hello/(:name)?', hello.perform);
10
+
11
+router.all('/register', register.perform);
12
+
13
+router.all('/login', login.perform);

+ 10 - 0
routes/helloworld.js

@@ -0,0 +1,10 @@
1
+module.exports = {
2
+  perform: function (a, b) {
3
+    perform(a,b);
4
+  }
5
+}
6
+
7
+var perform = function(req, res) {
8
+  var name = req.params.name || "World";
9
+  res.send('<title>Hello ' + name + '!</title>' + 'Hello ' + name + "!");
10
+}

+ 63 - 0
routes/login.js

@@ -0,0 +1,63 @@
1
+var Redis = require("ioredis");
2
+var redis = new Redis();
3
+var bcrypt = require('bcrypt-nodejs');
4
+
5
+module.exports = {
6
+  perform: function(a,b) {
7
+    perform(a,b);
8
+  }
9
+}
10
+
11
+var perform = function(req, res) {
12
+  var username = req.body.user || req.query.user;
13
+  username = username.toLowerCase();
14
+  var password = req.body.password || req.query.password;
15
+  var auth_key = req.body.auth_key || req.query.auth_key;
16
+  var uquery   = 'user:' + username;
17
+
18
+  redis.hgetall(uquery).then(function (result) {
19
+    if (result.password && result !== undefined && result !== null) {
20
+      var user_object = result;
21
+      if (auth_key !== "" && auth_key !== undefined && auth_key !== null) {
22
+        if (auth_key === user_object["auth-key"]) {
23
+          var timestamp_user = Date.now().toString() + username;
24
+          user_object["auth-key"] = bcrypt.hashSync(timestamp_user);
25
+          redis.set(uquery, "auth-key", user_object["auth-key"]);
26
+          res.send({"logged_in": 1,
27
+                   "auth-key": user_object["auth-key"],
28
+                   "error": 0});
29
+        } else {
30
+          res.send({"logged_in": 0,
31
+                   "error": 3});
32
+        }
33
+      } else {
34
+        bcrypt.compare(password, user_object["password"], function (err, matched) {
35
+          if (matched === true) {
36
+            if (undefined === user_object["auth-key"]) {
37
+              var timestamp_user = Date.now().toString() + username;
38
+              user_object["auth-key"] = bcrypt.hashSync(timestamp_user);
39
+              redis.set(uquery, JSON.stringify(user_object));
40
+              res.send({"logged_in": 1,
41
+                       "auth-key": user_object["auth-key"],
42
+                       "error": 0});
43
+            } else {
44
+              res.send({"logged_in": 1,
45
+                       "auth-key": user_object["auth-key"],
46
+                       "error": 0});
47
+            }
48
+            return;
49
+          } else {
50
+            res.send({"logged_in": 0,
51
+                     "error": 2});
52
+                     return;
53
+          }
54
+        });
55
+
56
+      }
57
+    } else {
58
+      res.send({"logged_in": 0,
59
+               "error": 1});
60
+               return;
61
+    }
62
+  });
63
+};

+ 34 - 0
routes/register.js

@@ -0,0 +1,34 @@
1
+var Redis = require("ioredis");
2
+var redis = new Redis();
3
+var bcrypt = require('bcrypt-nodejs');
4
+
5
+module.exports = {
6
+  perform: function(a,b) {
7
+    perform(a,b);
8
+  }
9
+}
10
+
11
+var perform = function (req, res) {
12
+  var tmp_username = req.body.user || req.query.user;
13
+  var tmp_password = req.body.password || req.query.password;
14
+  tmp_username = tmp_username.toLowerCase();
15
+  var uquery       = 'user:' + tmp_username;
16
+  var user_object  = {};
17
+
18
+  redis.hgetall(uquery).then(function (result) {
19
+    if (result.password && result !== undefined && result !== null) {
20
+      res.send({"registered": 0,
21
+               "error": 1});
22
+    } else {
23
+      bcrypt.hash(tmp_password, null, null, function (err, hash) {
24
+        user_object["password"] = hash;
25
+        user_object["auth-key"] = bcrypt.hashSync(Date.now().toString() + tmp_username);
26
+        redis.hset(uquery, "password", user_object.password);
27
+        redis.hset(uquery, "auth-key", user_object["auth-key"]);
28
+        res.send({"registered": 1,
29
+                 "auth-key": user_object["auth-key"],
30
+                 "error": 0});
31
+      });
32
+    }
33
+  });
34
+};