finished 1st round of refactoring
[pharext/pharext.org] / app / Controller / Github / Release.php
index f0dd55f840c3498c255515f14e0ea39886a4a6eb..32da9b5dd5f109ea29e4502701ec4fa00ef99951 100644 (file)
@@ -5,34 +5,30 @@ namespace app\Controller\Github;
 use app\Controller\Github;
 use app\Github\API\Repos\RepoCallback;
 
-
 class Release extends Github
 {
        function __invoke(array $args = null) {
                extract($args);
                if ($this->checkToken()) {
-                       list($repo) = $this->github->readRepo("$owner/$name", function($repo, $links = null) {
-                               call_user_func(new RepoCallback($this->github), $repo, $links);
-
-                               $this->github->listReleases($repo->full_name, null, function($releases) use($repo) {
-                                       $config = $this->app->getRequest()->getForm();
-                                       foreach ($releases as $r) {
-                                               if ($r->tag_name === $config->tag) {
-                                                       $this->github->uploadAssetForRelease($repo, $r, $config, function() use($repo) {
-                                                               $this->app->redirect($this->app->getBaseUrl()->mod("./github/" . $repo->full_name));
-                                                       });
-                                                       return;
-                                               }
+                       $this->github->readRepo("$owner/$name")->then(
+                               new RepoCallback($this->github)
+                       )->then(function($result) use(&$repo) {
+                               list($repo,,,$releases) = $result;
+                               $config = $this->app->getRequest()->getForm();
+                               
+                               foreach ($releases as $release) {
+                                       if ($release->tag_name === $config["tag"]) {
+                                               return $this->github->uploadAssetForRelease($repo, $release, $config);
                                        }
-                                       
-                                       $this->github->createReleaseFromTag($repo, $tag, $config, function() use($repo) {
-                                               $this->app->redirect($this->app->getBaseUrl()->mod("./github/" . $repo->full_name));
-                                       });
-                               });
-                       })->send();
+                               }
+                               
+                               return $this->github->createReleaseFromTag($repo, $config["tag"], $config);
+                       })->done(function() use(&$repo) {
+                               $this->app->redirect($this->app->getBaseUrl()->mod("./github/repo/" . $repo->full_name));
+                       });
                        
+                       $this->github->drain();
                        $hook = $this->github->checkRepoHook($repo);
-
                        $this->app->getView()->addData(compact("owner", "name", "repo", "hook"));
 
                        if (($modal = $this->app->getRequest()->getQuery("modal"))) {