repo = $repo; return $this; } /** * @param string $owner * * @return $this */ public function owner($owner) { $this->owner = $owner; return $this; } /** * @param string $uri * * @return $this */ public function uri($uri) { list($this->owner, $this->repo) = explode('/', $uri); return $this; } /** * @return string */ protected function getUri() { return $this->owner . '/' . $this->repo; } /** * @param string $user * * @return $this */ public function user($user) { $this->user = $user; return $this; } /** * @param $password * * @return $this */ public function password($password) { $this->password = $password; return $this; } /** * @param $accessToken * * @return $this */ public function accessToken($token) { $this->accessToken = $token; return $this; } /** * @param string $uri * @param array $params * @param string $method * * @return array * * @throws \Robo\Exception\TaskException */ protected function sendRequest($uri, $params = [], $method = 'POST') { if (!$this->owner or !$this->repo) { throw new TaskException($this, 'Repo URI is not set'); } $ch = curl_init(); $url = sprintf('%s/repos/%s/%s', self::GITHUB_URL, $this->getUri(), $uri); $this->printTaskInfo($url); $this->printTaskInfo('{method} {url}', ['method' => $method, 'url' => $url]); if (!empty($this->user)) { curl_setopt($ch, CURLOPT_USERPWD, $this->user . ':' . $this->password); } if (!empty($this->accessToken)) { $url .= "?access_token=" . $this->accessToken; } curl_setopt_array( $ch, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => $method != 'GET', CURLOPT_POSTFIELDS => json_encode($params), CURLOPT_FOLLOWLOCATION => true, CURLOPT_USERAGENT => "Robo" ) ); $output = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $response = json_decode($output); $this->printTaskInfo($output); return [$code, $response]; } }