Browse Source

Add a route to view individual users

Matt Coles 9 years ago
parent
commit
475f7b571d
4 changed files with 56 additions and 5 deletions
  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
     * [/hello/:name/](#helloname)
13
     * [/hello/:name/](#helloname)
14
     * [/user/register/](#userregister)
14
     * [/user/register/](#userregister)
15
     * [/user/auth/](#userauth)
15
     * [/user/auth/](#userauth)
16
+    * [/user/view/](#userview)
17
+    * [/user/view/:user](#userviewuser)
16
     * [/society/create/](#societycreate)
18
     * [/society/create/](#societycreate)
17
     * [/society/view/](#societyview)
19
     * [/society/view/](#societyview)
18
     * [/society/view/:society\_name](#societyviewsociety_name)
20
     * [/society/view/:society\_name](#societyviewsociety_name)
93
 The error codes are as follows, `1` indicates the username or password was
95
 The error codes are as follows, `1` indicates the username or password was
94
 invalid and `2` indicates that the login request was malformed.
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
 ### /society/create/
119
 ### /society/create/
97
 To create a new society, a `POST` request should be sent with the following
120
 To create a new society, a `POST` request should be sent with the following
98
 data:
121
 data:

+ 16 - 5
presenters/user-controller.js

20
     var user_key = "user:" + user;
20
     var user_key = "user:" + user;
21
 
21
 
22
     redis.hgetall(user_key, function(err, result) {
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

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