namespace app\Github;
-use app\Github\API;
use app\Github\Storage;
use app\Github\Exception;
use app\Pharext;
}
function hasToken() {
- return $this->tokens->get("access_token");
+ if ($this->tokens->get("access_token", $token)) {
+ $access_token = $token->getValue();
+ if (isset($access_token)) {
+ return true;
+ }
+ $this->dropToken();
+ }
+ return false;
}
function setToken($token) {
"state" => $state,
"client_id" => $this->config->client->id,
"scope" => $this->config->client->scope,
- "redirect_uri" => $callback_url,
+ "redirect_uri" => (string) $callback_url,
];
return new Url("https://github.com/login/oauth/authorize", [
"query" => new QueryString($param)
function fetchToken($code, $state) {
if (!$this->tokens->get("state", $orig_state, true)) {
if (isset($orig_state)) {
- $this->logger->notice("State expired", $orig_state);
+ $this->logger->notice("State expired", compact("state", "orig_state"));
throw new Exception\StateExpired($orig_state->getLTL());
}
throw new Exception\StateNotSet;
}
/**
- * Check if the pharext webhook is set for the repo and return it
- * @param object $repo
+ * Check if the pharext webhook is set and return it
+ * @param array $hooks
* @return stdClass hook
*/
- function checkRepoHook($repo) {
- if (!empty($repo->hooks)) {
- foreach ($repo->hooks as $hook) {
+ function checkHook($hooks) {
+ if (!empty($hooks)) {
+ foreach ($hooks as $hook) {
if ($hook->name === "web" && $hook->config->url === $this->config->hook->url) {
return $hook;
}
return null;
}
+ /**
+ * Check if the pharext webhook is set for the repo and return it
+ * @param object $repo
+ * @return stdClass hook
+ */
+ function checkRepoHook($repo) {
+ if (!empty($repo->hooks)) {
+ return $this->checkHook($repo->hooks);
+ }
+ return null;
+ }
+
function listHooks($repo) {
return $this->queue(new API\Hooks\ListHooks($this, compact("repo")));
}
$repo->name,
$config ?: (array) $this->checkRepoHook($repo)->config
);
- $name = sprintf("%s-%s.ext.phar", $repo->name, $release->tag_name);
+ $name = $phar->build();
$url = uri_template($release->upload_url, compact("name"));
$promise = $this->createReleaseAsset($url, $phar, "application/phar");
if ($release->draft) {