Selaa lähdekoodia

Implement friends list routes

Matt Coles 9 vuotta sitten
vanhempi
commit
e63d79ed4b

+ 69 - 1
presenters/user-controller.js

@@ -166,7 +166,75 @@ module.exports = {
166 166
           })
167 167
         });
168 168
       }
169
-    })
169
+    });
170
+  },
171
+
172
+  add_friend: function(friend, auth, complete) {
173
+    var self = this;
174
+    friend = friend.toLowerCase();
175
+    self.get_user_from_auth(auth, function (username) {
176
+      if (username) {
177
+        self.get_public_user_info(username, function (userdata) {
178
+          var friends = userdata.user.friends;
179
+          if (friends.indexOf(friend) > -1) {
180
+            complete({
181
+              "success": 0,
182
+              "error": 2
183
+            });
184
+          } else {
185
+            self.user_exists(friend, function (exists) {
186
+              if (exists) {
187
+                friends.push(friend);
188
+                redis.hset("user:" + username.toLowerCase(), "friends", JSON.stringify(friends));
189
+                complete({
190
+                  "success": 1,
191
+                  "error": 0
192
+                });
193
+              } else {
194
+                complete({
195
+                  "success": 0,
196
+                  "error": 3
197
+                });
198
+              }
199
+            });
200
+          }
201
+        });
202
+      } else {
203
+        complete({
204
+          "success": 0,
205
+          "error": 1
206
+        });
207
+      }
208
+    });
209
+  },
170 210
 
211
+  remove_friend: function(friend, auth, complete) {
212
+    var self = this;
213
+    friend = friend.toLowerCase();
214
+    self.get_user_from_auth(auth, function (username) {
215
+      if (username) {
216
+        self.get_public_user_info(username, function (userdata) {
217
+          var friends = userdata.user.friends;
218
+          if (friends.indexOf(friend) === -1) {
219
+            complete({
220
+              "success": 0,
221
+              "error": 2
222
+            });
223
+          } else {
224
+            friends.splice(friends.indexOf(friend), 1);
225
+            redis.hset("user:" + username.toLowerCase(), "friends", JSON.stringify(friends));
226
+            complete({
227
+              "success": 1,
228
+              "error": 0
229
+            });
230
+          }
231
+        });
232
+      } else {
233
+        complete({
234
+          "success": 0,
235
+          "error": 1
236
+        });
237
+      }
238
+    });
171 239
   }
172 240
 }

+ 23 - 0
routes/friends/add-friend.js

@@ -0,0 +1,23 @@
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
+  var friend = req.body.friend || req.query.friend;
11
+  var auth = req.body.auth || req.query.auth;
12
+
13
+  if (friend && auth) {
14
+    user_controller.add_friend(friend, auth, function (response) {
15
+      res.send(response);
16
+    });
17
+  } else {
18
+    res.send({
19
+      "success": 0,
20
+      "error": 4
21
+    })
22
+  }
23
+};

+ 23 - 0
routes/friends/remove-friend.js

@@ -0,0 +1,23 @@
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
+  var friend = req.body.friend || req.query.friend;
11
+  var auth = req.body.auth || req.query.auth;
12
+
13
+  if (friend && auth) {
14
+    user_controller.remove_friend(friend, auth, function (response) {
15
+      res.send(response);
16
+    });
17
+  } else {
18
+    res.send({
19
+      "success": 0,
20
+      "error": 3
21
+    })
22
+  }
23
+};

+ 5 - 0
utils/route-manager.js

@@ -15,6 +15,8 @@ var event_view = require("../routes/events/view-society-events.js");
15 15
 var event_pending = require("../routes/events/view-pending-events.js");
16 16
 var event_accept = require("../routes/events/accept-event.js");
17 17
 var event_decline = require("../routes/events/decline-event.js");
18
+var friend_add = require("../routes/friends/add-friend.js");
19
+var friend_remove = require("../routes/friends/remove-friend.js");
18 20
 
19 21
 module.exports = router;
20 22
 
@@ -36,3 +38,6 @@ router.all('/events/view/:eventid', event_view.perform);
36 38
 router.all('/events/pending/', event_pending.perform);
37 39
 router.all('/events/accept/:eventid', event_accept.perform);
38 40
 router.all('/events/decline/:eventid', event_decline.perform);
41
+
42
+router.all('/friends/add/', friend_add.perform);
43
+router.all('/friends/remove/', friend_remove.perform);