/** * @param Project $project * @param PayloadInterface $payload * * @todo implement PayloadInterface#getPullRequestUrl and PayloadInterface#getPullRequestTitle * * @return PullRequest */ public function createPullRequestFromPayload(Project $project, $payload) { $json = json_decode($payload, true); $pr = new PullRequest(); $pr->setNumber($json['pull_request']['number']); $pr->setTitle($json['pull_request']['title']); $pr->setRef(sprintf('pull/%d/head', $json['pull_request']['number'])); $pr->setOpen($json['pull_request']['state'] === 'open'); $pr->setUrl(sprintf('https://github.com/%s/pull/%d', $project->getFullName(), $json['pull_request']['number'])); $pr->setProject($project); return $pr; }
/** * @param Project $project * * @return boolean */ protected function doPullRequests(Project $project) { $url = sprintf('/repos/%s/pulls', $project->getFullName()); $request = $this->client->get($url); $response = $request->send(); foreach ($response->json() as $data) { $pr = new PullRequest(); $pr->setNumber($data['number']); $pr->setOpen($data['state'] === 'open'); $pr->setTitle($data['title']); $pr->setRef(sprintf('pull/%d/head', $data['number'])); $pr->setProject($project); $project->addPullRequest($pr); } }