params = $params; $this->url = $giteaUrl."/api/v1"; $this->session = $session; } public function gettoken() { $apiurl = $this->params->get("oauthTokenurl"); $query= [ "client_id" => $this->params->get("oauthClientid"), "client_secret" => $this->params->get("oauthClientsecret"), "code" => $this->session->get("giteacode"), "grant_type" => "authorization_code", "redirect_uri" => $this->session->get("giteacallback") ]; $body = \Unirest\Request\Body::json($query); $response=$this->api("POST",$apiurl,$body); if(!$response||$response->code!="200") return false; else { $this->session->set('giteatoken', $response->body->access_token); return $response->body->access_token; } } public function getuser() { $apiurl = $this->url."/user"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getuserprofil($id) { $apiurl = $this->url."/users/$id"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); dump($response); if(!$response||$response->code!="200") return false; else return $response->body; } public function getorga($id) { $apiurl = $this->url."/orgs/$id"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getorgateams($id) { $apiurl = $this->url."/orgs/$id/teams"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getteammembers($id) { $apiurl = $this->url."/teams/$id/members"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getrepos() { $apiurl = $this->url."/user/repos"; $page=1; $limit=10; $repos=[]; do { $query=["page"=>$page,"limit"=>$limit]; $response=$this->api("GET",$apiurl,$query,$this->session->get("giteatoken")); $this->session->get("giteatoken"); if(!$response||$response->code!="200") return false; else { $page=$page+1; $repos=array_merge($repos,$response->body); } } while(!empty($response->body)); return $repos; } public function getnotifications() { $apiurl = $this->url."/notifications?all=true"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getrepo($id) { $apiurl = $this->url."/repositories/$id"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getrepocontents($owner,$name) { $apiurl = $this->url."/repos/$owner/$name/contents"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getreponotifications($owner,$name) { $apiurl = $this->url."/repos/$owner/$name/notifications"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getlabels($owner,$name) { $apiurl = $this->url."/repos/$owner/$name/labels"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getlabel($owner,$name,$id) { $apiurl = $this->url."/repos/$owner/$name/labels/$id"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getcollaborators($owner,$name) { $apiurl = $this->url."/repos/$owner/$name/collaborators"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getcollaborator($owner,$name,$id) { $apiurl = $this->url."/repos/$owner/$name/collaborators/$id"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getmilestones($owner,$name) { $apiurl = $this->url."/repos/$owner/$name/milestones"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getissues($owner,$name) { $apiurl = $this->url."/repos/$owner/$name/issues?state=open"; $page=1; $limit=20; $issues=[]; do { $query=["page"=>$page,"limit"=>$limit]; $response=$this->api("GET",$apiurl,$query,$this->session->get("giteatoken")); $this->session->get("giteatoken"); if(!$response||$response->code!="200") return false; else { $page=$page+1; $issues=array_merge($issues,$response->body); } } while(!empty($response->body)); return $issues; } public function getissue($owner,$name,$index) { $apiurl = $this->url."/repos/$owner/$name/issues/$index"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function getissuelabels($owner,$name,$index) { $apiurl = $this->url."/repos/$owner/$name/issues/$index/labels"; $response=$this->api("GET",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function deleteissuelabel($owner,$name,$index,$label) { $apiurl = $this->url."/repos/$owner/$name/issues/$index/labels/$label"; $response=$this->api("DELETE",$apiurl,null,$this->session->get("giteatoken")); if(!$response||$response->code!="204") return false; else return true; } public function putissuelabels($owner,$name,$index,$labels) { $apiurl = $this->url."/repos/$owner/$name/issues/$index/labels"; $query= ["labels" => $labels]; $body = \Unirest\Request\Body::json($query); $response=$this->api("POST",$apiurl,$body,$this->session->get("giteatoken")); if(!$response||$response->code!="200") return false; else return $response->body; } public function patchissue($owner,$name,$index,$patchs) { $apiurl = $this->url."/repos/$owner/$name/issues/$index"; $body = \Unirest\Request\Body::json($patchs); $response=$this->api("PATCH",$apiurl,$body,$this->session->get("giteatoken")); dump($response); if(!$response||$response->code!="201") return false; else return $response->body; } private function api($method,$url,$query,$token=null) { // Entete $headers = [ 'Accept' => 'application/json', 'Content-Type' => 'application/json', ]; if($token) $headers["Authorization"]="token ".$token; // Paramétrage unirest \Unirest\Request::verifyPeer(false); \Unirest\Request::verifyHost(false); \Unirest\Request::timeout(5); // Déclaration du proxy $proxyUse = $this->params->get("proxyUse"); if($proxyUse) { $proxyHost = $this->params->get("proxyHost"); $proxyPort = $this->params->get("proxyPort"); \Unirest\Request::proxy($proxyHost, $proxyPort, CURLPROXY_HTTP, true); } $response = false; switch($method) { case "POST": try{ $response = \Unirest\Request::post($url,$headers,$query); } catch (\Exception $e) { return false; } break; case "GET": try{ $response = \Unirest\Request::get($url,$headers,$query); } catch (\Exception $e) { return false; } break; case "DELETE": try{ $response = \Unirest\Request::delete($url,$headers,$query); } catch (\Exception $e) { return false; } break; case "PATCH": try{ $response = \Unirest\Request::patch($url,$headers,$query); } catch (\Exception $e) { return false; } break; } return $response; } }