Ver código fonte

Add society joining route

Matt Coles 9 anos atrás
pai
commit
8ef1d37a7d

+ 15 - 6
presenters/society-controller.js

@@ -55,9 +55,10 @@ module.exports = {
55 55
               admins.map(function (admin_name) {
56 56
                 redis.hget("user:" + admin_name, "societies", function (err, result) {
57 57
                   if (result) {
58
-                    redis.hset("user:" + admin_name, "societies", result.concat(society_name));
58
+                    result = JSON.parse(result);
59
+                    redis.hset("user:" + admin_name, "societies", JSON.stringify(result.concat(society_name)));
59 60
                   } else {
60
-                    redis.hset("user:" + admin_name, "societies", [society_name]);
61
+                    redis.hset("user:" + admin_name, "societies", JSON.stringify([society_name]));
61 62
                   }
62 63
                 });
63 64
               });
@@ -115,13 +116,15 @@ module.exports = {
115 116
           user_query = "user:" + username;
116 117
           redis.hget(user_query, "societies", function (err, result) {
117 118
             if (result) {
118
-              redis.hset(user_query, "societies", result.concat(society_name));
119
+              result = JSON.parse(result);
120
+              redis.hset(user_query, "societies", JSON.stringify(result.concat(soc_name)));
119 121
             } else {
120
-              redis.hset(user_query, "societies", [society_name]);
122
+              redis.hset(user_query, "societies", JSON.stringify([soc_name]));
121 123
             }
122 124
           });
123 125
           redis.hget("society:" + soc_name, "users", function (err, users_result) {
124
-            redis.hset("society" + soc_name, users_result.concat(username));
126
+            users_result = JSON.parse(users_result);
127
+            redis.hset("society:" + soc_name, "users", JSON.stringify(users_result.concat(username)));
125 128
           });
126 129
         });
127 130
         complete({
@@ -145,6 +148,12 @@ module.exports = {
145 148
     });
146 149
     stream.on('end', function () {
147 150
       var soc_objects = [];
151
+      if (society_names.length === 0) {
152
+        complete({
153
+          "societies": []
154
+        });
155
+        return;
156
+      }
148 157
       for (var ii = 0; ii < society_names.length; ii++) {
149 158
         self.get_society(society_names[ii], function(response) {
150 159
           soc_objects.push(response.society);
@@ -160,7 +169,7 @@ module.exports = {
160 169
           }
161 170
         });
162 171
       }
163
-    })
172
+    });
164 173
   },
165 174
 
166 175
   leave_society: function (soc_name, auth, complete) {

+ 17 - 0
presenters/user-controller.js

@@ -16,6 +16,18 @@ module.exports = {
16 16
     });
17 17
   },
18 18
 
19
+  get_public_user_info: function (user, complete) {
20
+    var user_key = "user:" + user;
21
+
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 || [];
28
+    });
29
+  },
30
+
19 31
   get_user_from_auth: function (auth, complete) {
20 32
     var auth_key = "auth-key:" + auth;
21 33
 
@@ -83,6 +95,11 @@ module.exports = {
83 95
 
84 96
           redis.hset(user_key, "password", new_user["password"]);
85 97
           redis.hset(user_key, "auth-key", new_user["auth-key"]);
98
+          redis.hset(user_key, "societies", JSON.stringify([]));
99
+          redis.hset(user_key, "friends", JSON.stringify([]));
100
+          redis.hset(user_key, "pending_events", JSON.stringify([]));
101
+          redis.hset(user_key, "accepted_events", JSON.stringify([]));
102
+          redis.hset(user_key, "declined_events", JSON.stringify([]));
86 103
           redis.set(auth_key, user);
87 104
           complete({
88 105
             "registered": 1,

+ 11 - 0
routes/society/join-society.js

@@ -1,5 +1,6 @@
1 1
 var Redis = require("ioredis");
2 2
 var redis = new Redis();
3
+var society_controller = require("./../../presenters/society-controller.js");
3 4
 
4 5
 module.exports = {
5 6
   perform: function (a,b) {
@@ -8,5 +9,15 @@ module.exports = {
8 9
 }
9 10
 
10 11
 var perform = function (req, res) {
12
+  var soc_name = req.body.society || req.query.society;
13
+  var auth_key = req.body.auth || req.query.auth;
11 14
 
15
+  if (soc_name && auth_key) {
16
+    society_controller.join_society(soc_name, auth_key, function (response) {
17
+      res.send(response);
18
+    });
19
+  } else {
20
+    res.send({"success": 0,
21
+              "error": 2});
22
+  }
12 23
 };

+ 2 - 0
utils/route-manager.js

@@ -5,6 +5,7 @@ var register = require("../routes/user/register.js");
5 5
 var login = require("../routes/user/login.js");
6 6
 var soc_create = require("../routes/society/create-society.js");
7 7
 var soc_view = require("../routes/society/view-society.js");
8
+var soc_join = require("../routes/society/join-society.js");
8 9
 
9 10
 module.exports = router;
10 11
 
@@ -15,3 +16,4 @@ router.all('/user/auth/', login.perform);
15 16
 
16 17
 router.all('/society/create', soc_create.perform);
17 18
 router.all('/society/view/(:societyid)?', soc_view.perform);
19
+router.all('/society/join/', soc_join.perform);