X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=app%2FController%2FGithub%2FRepoHook.php;h=9d9ad2cbcabea571cc81ef2e068f2d06d6765479;hb=303950054385d4c55cfef9a8828ee79420b7366e;hp=14d3d69da48fa20e0b13b40f613f7e9938532009;hpb=ee3977104c9ea0984c76f75f965c528bc4b3b64e;p=pharext%2Fpharext.org diff --git a/app/Controller/Github/RepoHook.php b/app/Controller/Github/RepoHook.php index 14d3d69..9d9ad2c 100644 --- a/app/Controller/Github/RepoHook.php +++ b/app/Controller/Github/RepoHook.php @@ -8,86 +8,79 @@ use app\Github\API\Hooks\ListHooks; class RepoHook extends Github { function __invoke(array $args = null) { - if ($this->checkToken()) { - if ($this->app->getRequest()->getRequestMethod() != "POST") { - // user had to re-authenticate, and was redirected here - $this->app->redirect($this->app->getBaseUrl()->mod([ - "path" => "./github/repo/" . $args["owner"] ."/". $args["name"], - "query" => "modal=hook&hook=" . $args["action"] - ])); - } else { - switch ($args["action"]) { - case "upd": - $this->updateHook($args["owner"], $args["name"]); - break; - - case "add": - $this->addHook($args["owner"], $args["name"]); - break; + if (!$this->checkToken()) { + return; + } + if ($this->app->getRequest()->getRequestMethod() != "POST") { + // user had to re-authenticate, and was redirected here + $this->app->redirect($this->app->getBaseUrl()->mod([ + "path" => "./github/repo/" . $args["owner"] ."/". $args["name"], + "query" => "modal=hook&hook=" . $args["action"] + ])); + } else { + $this->changeHook($args)->done(function() use($args) { + $this->redirectBack($args["owner"]."/".$args["name"]); + }); + $this->github->drain(); + } + } - case "del": - $this->delHook($args["owner"], $args["name"]); - break; - } - } + function changeHook($args) { + switch ($args["action"]) { + case "upd": + return $this->updateHook($args["owner"] ."/". $args["name"]); + case "add": + return $this->addHook($args["owner"] ."/". $args["name"]); + case "del": + return $this->delHook($args["owner"] ."/". $args["name"]); + default: + throw new \Exception("Unknown action ".$args["action"]); } } - function addHook($owner, $repo) { + function addHook($repo_name) { $hook_conf = $this->app->getRequest()->getForm(); - $this->github->createRepoHook("$owner/$repo", $hook_conf)->then(function($hook) use($owner, $repo) { - $call = new ListHooks($this->github, ["repo" => "$owner/$repo", "fresh" => true]); - $this->github->queue($call)->then(function() use($owner, $repo) { - $this->redirectBack("$owner/$repo"); - }); + $listhooks = new ListHooks($this->github, ["repo" => $repo_name]); + return $this->github->createRepoHook($repo_name, $hook_conf)->then(function() use($listhooks) { + $listhooks->dropFromCache(); }); - $this->github->drain(); } - function updateHook($owner, $repo) { - $this->github->readRepo("$owner/$repo")->then(function($result) { - list($repo) = $result; - $call = new ListHooks($this->github, ["repo" => $repo->full_name]); - $this->github->queue($call)->then(function($result) use($repo, $call) { - list($repo->hooks) = $result; - if (($hook = $this->github->checkRepoHook($repo))) { - $hook_conf = $this->app->getRequest()->getForm(); - $this->github->updateRepoHook($repo->full_name, $hook->id, $hook_conf)->then(function($hook_result) use($repo, $hook, $result, $call) { - list($changed_hook) = $hook_result; - foreach ($changed_hook as $key => $val) { - $hook->$key = $val; - } - $call->saveToCache($result); - $this->redirectBack($repo->full_name); - }); - } - }); + function updateHook($repo_name) { + $listhooks = new ListHooks($this->github, ["repo" => $repo_name]); + return $this->github->queue($listhooks)->then(function($result) use($repo_name) { + list($hooks) = $result; + + if (!($hook = $this->github->checkHook($hooks))) { + throw new \Exception("Hook is not set"); + } + + return $this->github->updateRepoHook($repo_name, $hook->id, $this->app->getRequest()->getForm()); + })->then(function() use($listhooks) { + $listhooks->dropFromCache(); }); - $this->github->drain(); } - function delHook($owner, $repo) { - $this->github->readRepo("$owner/$repo")->then(function($result) { - list($repo) = $result; - $call = new ListHooks($this->github, ["repo" => $repo->full_name]); - $this->github->queue($call)->then(function($result) use($repo, $call) { - list($repo->hooks) = $result; - if (($hook = $this->github->checkRepoHook($repo))) { - $this->github->deleteRepoHook($repo->full_name, $hook->id)->then(function() use($repo, $call) { - $call->dropFromCache(); - $this->redirectBack($repo->full_name); - }); - } - }); + function delHook($repo_name) { + $listhooks = new ListHooks($this->github, ["repo" => $repo_name]); + return $this->github->queue($listhooks)->then(function($result) use($repo_name) { + list($hooks) = $result; + + if (!($hook = $this->github->checkHook($hooks))) { + throw new \Exception("Hook is not set"); + } + + return $this->github->deleteRepoHook($repo_name, $hook->id); + })->then(function() use($listhooks) { + $listhooks->dropFromCache(); }); - $this->github->drain(); } function redirectBack($repo) { if (($back = $this->app->getRequest()->getForm("returnback")) && isset($this->session->previous)) { $this->app->redirect($this->app->getBaseUrl()->mod($this->session->previous)); } else { - $this->app->redirect($this->app->getBaseUrl()->mod("./github/repo/" . $repo)); + $this->app->redirect($this->app->getBaseUrl()->mod(":./github/repo/" . $repo)); } } }