]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - routes/api/v1/pods.js
Finalise the join in a network and add the ability to quit it
[github/Chocobozzz/PeerTube.git] / routes / api / v1 / pods.js
index 2bb8f89abfdbd407d8c2ec99d13c87bd25fc3110..2430b0d7eebb73b6f7b495d5616536ae6a96f2ba 100644 (file)
@@ -6,6 +6,7 @@
   var middleware = require('../../../middlewares')
   var miscMiddleware = middleware.misc
   var reqValidator = middleware.reqValidators.pods
+  var secureRequest = middleware.reqValidators.remote.secureRequest
   var pods = require('../../../src/pods')
 
   function listPods (req, res, next) {
     })
   }
 
+  function removePods (req, res, next) {
+    pods.remove(req.body.signature.url, function (err) {
+      if (err) return next(err)
+
+      res.sendStatus(204)
+    })
+  }
+
   function makeFriends (req, res, next) {
-    pods.makeFriends(function (err) {
+    pods.hasFriends(function (err, has_friends) {
+      if (err) return next(err)
+
+      if (has_friends === true) {
+        // We need to quit our friends before make new ones
+        res.sendStatus(409)
+      } else {
+        pods.makeFriends(function (err) {
+          if (err) return next(err)
+
+          res.sendStatus(204)
+        })
+      }
+    })
+  }
+
+  function quitFriends (req, res, next) {
+    pods.quitFriends(function (err) {
       if (err) return next(err)
 
       res.sendStatus(204)
 
   router.get('/', miscMiddleware.cache(false), listPods)
   router.get('/makefriends', miscMiddleware.cache(false), makeFriends)
+  router.get('/quitfriends', miscMiddleware.cache(false), quitFriends)
   router.post('/', reqValidator.podsAdd, miscMiddleware.cache(false), addPods)
+  // Post because this is a secured request
+  router.post('/remove', secureRequest, miscMiddleware.decryptBody, removePods)
 
   module.exports = router
 })()