/libraries/joomla/github/commits.php
PHP | 357 lines | 132 code | 44 blank | 181 comment | 20 complexity | 812da9584900037ad83b5bc2249c55f6 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
- <?php
- /**
- * @package Joomla.Platform
- * @subpackage GitHub
- *
- * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE
- */
- defined('JPATH_PLATFORM') or die;
- /**
- * GitHub API Commits class for the Joomla Platform.
- *
- * @package Joomla.Platform
- * @subpackage GitHub
- * @since 12.1
- */
- class JGithubCommits extends JGithubObject
- {
- /**
- * Method to create a commit.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $message The commit message.
- * @param string $tree SHA of the tree object this commit points to.
- * @param array $parents Array of the SHAs of the commits that were the parents of this commit.
- * If omitted or empty, the commit will be written as a root commit.
- * For a single parent, an array of one SHA should be provided.
- * For a merge commit, an array of more than one should be provided.
- *
- * @return object
- *
- * @since 12.1
- */
- public function create($user, $repo, $message, $tree, array $parents = array())
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/git/commits';
- $data = json_encode(
- array('message' => $message, 'tree' => $tree, 'parents' => $parents)
- );
- // Send the request.
- $response = $this->client->post($this->fetchUrl($path), $data);
- // Validate the response code.
- if ($response->code != 201)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to create a comment on a commit.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $sha The SHA of the commit to comment on.
- * @param string $comment The text of the comment.
- * @param integer $line The line number of the commit to comment on.
- * @param string $filepath A relative path to the file to comment on within the commit.
- * @param integer $position Line index in the diff to comment on.
- *
- * @return object
- *
- * @since 12.1
- */
- public function createCommitComment($user, $repo, $sha, $comment, $line, $filepath, $position)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/commits/' . $sha . '/comments';
- $data = json_encode(
- array(
- 'body' => $comment,
- 'commit_id' => $sha,
- 'line' => (int) $line,
- 'path' => $filepath,
- 'position' => (int) $position
- )
- );
- // Send the request.
- $response = $this->client->post($this->fetchUrl($path), $data);
- // Validate the response code.
- if ($response->code != 201)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to delete a comment on a commit.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $id The ID of the comment to edit.
- *
- * @return object
- *
- * @since 12.1
- */
- public function deleteCommitComment($user, $repo, $id)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/comments/' . $id;
- // Send the request.
- $response = $this->client->delete($this->fetchUrl($path));
- // Validate the response code.
- if ($response->code != 204)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to edit a comment on a commit.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $id The ID of the comment to edit.
- * @param string $comment The text of the comment.
- *
- * @return object
- *
- * @since 12.1
- */
- public function editCommitComment($user, $repo, $id, $comment)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/comments/' . $id;
- $data = json_encode(
- array(
- 'body' => $comment
- )
- );
- // Send the request.
- $response = $this->client->patch($this->fetchUrl($path), $data);
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to get a single commit for a repository.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $sha The SHA of the commit to retrieve.
- * @param integer $page Page to request
- * @param integer $limit Number of results to return per page
- *
- * @return array
- *
- * @since 12.1
- */
- public function getCommit($user, $repo, $sha, $page = 0, $limit = 0)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/commits/' . $sha;
- // Send the request.
- $response = $this->client->get($this->fetchUrl($path, $page, $limit));
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to get a single comment on a commit.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param integer $id ID of the comment to retrieve
- *
- * @return array
- *
- * @since 12.1
- */
- public function getCommitComment($user, $repo, $id)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/comments/' . $id;
- // Send the request.
- $response = $this->client->get($this->fetchUrl($path));
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to get a list of comments for a single commit for a repository.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $sha The SHA of the commit to retrieve.
- * @param integer $page Page to request
- * @param integer $limit Number of results to return per page
- *
- * @return array
- *
- * @since 12.1
- */
- public function getCommitComments($user, $repo, $sha, $page = 0, $limit = 0)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/commits/' . $sha . '/comments';
- // Send the request.
- $response = $this->client->get($this->fetchUrl($path, $page, $limit));
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to get a diff for two commits.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param string $base The base of the diff, either a commit SHA or branch.
- * @param string $head The head of the diff, either a commit SHA or branch.
- *
- * @return array
- *
- * @since 12.1
- */
- public function getDiff($user, $repo, $base, $head)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/compare/' . $base . '...' . $head;
- // Send the request.
- $response = $this->client->get($this->fetchUrl($path));
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to list commits for a repository.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param integer $page Page to request
- * @param integer $limit Number of results to return per page
- *
- * @return array
- *
- * @since 12.1
- */
- public function getList($user, $repo, $page = 0, $limit = 0)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/commits';
- // Send the request.
- $response = $this->client->get($this->fetchUrl($path, $page, $limit));
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- /**
- * Method to get a list of commit comments for a repository.
- *
- * @param string $user The name of the owner of the GitHub repository.
- * @param string $repo The name of the GitHub repository.
- * @param integer $page Page to request
- * @param integer $limit Number of results to return per page
- *
- * @return array
- *
- * @since 12.1
- */
- public function getListComments($user, $repo, $page = 0, $limit = 0)
- {
- // Build the request path.
- $path = '/repos/' . $user . '/' . $repo . '/comments';
- // Send the request.
- $response = $this->client->get($this->fetchUrl($path, $page, $limit));
- // Validate the response code.
- if ($response->code != 200)
- {
- // Decode the error response and throw an exception.
- $error = json_decode($response->body);
- throw new DomainException($error->message, $response->code);
- }
- return json_decode($response->body);
- }
- }