Procházet zdrojové kódy

Add a route to view individual users

Matt Coles před 9 roky
rodič
revize
475f7b571d
4 změnil soubory, kde provedl 56 přidání a 5 odebrání
  1. 23 0
      README.md
  2. 16 5
      presenters/user-controller.js
  3. 15 0
      routes/user/view.js
  4. 2 0
      utils/route-manager.js

+ 23 - 0
README.md

@@ -13,6 +13,8 @@ Server for Integrated Project, powered by Express.js and Redis, listens only on
13 13
     * [/hello/:name/](#helloname)
14 14
     * [/user/register/](#userregister)
15 15
     * [/user/auth/](#userauth)
16
+    * [/user/view/](#userview)
17
+    * [/user/view/:user](#userviewuser)
16 18
     * [/society/create/](#societycreate)
17 19
     * [/society/view/](#societyview)
18 20
     * [/society/view/:society\_name](#societyviewsociety_name)
@@ -93,6 +95,27 @@ existing authentication key for that account. Note that you do not need to use
93 95
 The error codes are as follows, `1` indicates the username or password was
94 96
 invalid and `2` indicates that the login request was malformed.
95 97
 
98
+### /user/view/
99
+As yet unimplemented but will eventually return all of the users.
100
+
101
+### /user/view/:user
102
+To view the public information for any given `:user`, a `GET` request should be
103
+sent with no data, and the returned response will look like this:
104
+```javascript
105
+{
106
+    "user": {
107
+        "username": "test1",
108
+        "societies": [
109
+            "TestSociety2"
110
+        ],
111
+        "friends": [],
112
+        "accepted_events": []
113
+    },
114
+    "error": 0
115
+}
116
+```
117
+The error codes are as follows, `1` indicates that the user does not exist.
118
+
96 119
 ### /society/create/
97 120
 To create a new society, a `POST` request should be sent with the following
98 121
 data:

+ 16 - 5
presenters/user-controller.js

@@ -20,11 +20,22 @@ module.exports = {
20 20
     var user_key = "user:" + user;
21 21
 
22 22
     redis.hgetall(user_key, function(err, result) {
23
-      var public = {};
24
-      public.username = user;
25
-      public.societies = result.societies || [];
26
-      public.friends = result.friends || [];
27
-      public.accepted_events = result.accepted_events || [];
23
+      if (result.password) {
24
+        var public = {};
25
+        public.username = user;
26
+        public.societies = JSON.parse(result.societies) || [];
27
+        public.friends = JSON.parse(result.friends) || [];
28
+        public.accepted_events = JSON.parse(result.accepted_events) || [];
29
+        complete({
30
+          "user": public,
31
+          "error": 0
32
+        });
33
+      } else {
34
+        complete({
35
+          "user": {},
36
+          "error": 1
37
+        });
38
+      }
28 39
     });
29 40
   },
30 41
 

+ 15 - 0
routes/user/view.js

@@ -0,0 +1,15 @@
1
+var user_controller = require("./../../presenters/user-controller.js");
2
+
3
+module.exports = {
4
+  perform: function (a,b) {
5
+    perform(a,b);
6
+  }
7
+}
8
+
9
+var perform = function (req, res) {
10
+  if (req.params.user) {
11
+    user_controller.get_public_user_info(req.params.user.toLowerCase(), function (response) {
12
+      res.send(response);
13
+    });
14
+  }
15
+};

+ 2 - 0
utils/route-manager.js

@@ -3,6 +3,7 @@ var router = express.Router();
3 3
 var hello = require("../routes/misc/helloworld.js");
4 4
 var register = require("../routes/user/register.js");
5 5
 var login = require("../routes/user/login.js");
6
+var user_view = require("../routes/user/view.js");
6 7
 var soc_create = require("../routes/society/create-society.js");
7 8
 var soc_view = require("../routes/society/view-society.js");
8 9
 var soc_join = require("../routes/society/join-society.js");
@@ -13,6 +14,7 @@ router.get('/hello/(:name)?', hello.perform);
13 14
 
14 15
 router.all('/user/register/', register.perform);
15 16
 router.all('/user/auth/', login.perform);
17
+router.all('/user/view/(:user)?', user_view.perform);
16 18
 
17 19
 router.all('/society/create', soc_create.perform);
18 20
 router.all('/society/view/(:societyid)?', soc_view.perform);