You are here

class Github_Api_Repo in Bibliography Module 7.2

Searching repositories, getting repository information and managing repository information for authenticated users.

@link http://develop.github.com/p/repos.html @author Thibault Duplessis <thibault.duplessis at gmail dot com> @license MIT License

Hierarchy

Expanded class hierarchy of Github_Api_Repo

File

modules/CiteProc/Github/Api/Repo.php, line 11

View source
class Github_Api_Repo extends Github_Api {

  /**
   * Search repos by keyword
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $query            the search query
   * @param   string  $language         takes the same values as the language drop down on http://github.com/search
   * @param   int     $startPage        the page number
   * @return  array                     list of repos found
   */
  public function search($query, $language = '', $startPage = 1) {
    $response = $this
      ->get('repos/search/' . urlencode($query), array(
      'language' => strtolower($language),
      'start_page' => $startPage,
    ));
    return $response['repositories'];
  }

  /**
   * Get the repositories of a user
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the username
   * @return  array                     list of the user repos
   */
  public function getUserRepos($username) {
    $response = $this
      ->get('repos/show/' . urlencode($username));
    return $response['repositories'];
  }

  /**
   * Get a list of the repositories that the authenticated user can push to
   *
   * @return  array                     list of repositories
   */
  public function getPushableRepos() {
    $response = $this
      ->get('repos/pushable');
    return $response['repositories'];
  }

  /**
   * Get extended information about a repository by its username and repo name
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     informations about the repo
   */
  public function show($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo));
    return $response['repository'];
  }

  /**
   * create repo
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $name             name of the repository
   * @param   string  $description      repo description
   * @param   string  $homepage         homepage url
   * @param   bool    $public           1 for public, 0 for private
   * @return  array                     returns repo data
   */
  public function create($name, $description = '', $homepage = '', $public = true) {
    $response = $this
      ->post('repos/create', array(
      'name' => $name,
      'description' => $description,
      'homepage' => $homepage,
      'public' => $public,
    ));
    return $response['repository'];
  }

  /**
   * delete repo
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $name             name of the repository
   * @param   string  $token            delete token
   * @param   string  $force            force repository deletion
   *
   * @return  string|array              returns delete_token or repo status
   */
  public function delete($name, $token = null, $force = false) {
    if ($token === null) {
      $response = $this
        ->post('repos/delete/' . urlencode($name));
      $token = $response['delete_token'];
      if (!$force) {
        return $token;
      }
    }
    $response = $this
      ->post('repos/delete/' . urlencode($name), array(
      'delete_token' => $token,
    ));
    return $response;
  }

  /**
   * Set information of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @param   array   $values           the key => value pairs to post
   * @return  array                     informations about the repo
   */
  public function setRepoInfo($username, $repo, $values) {
    $response = $this
      ->post('repos/show/' . urlencode($username) . '/' . urlencode($repo), array(
      'values' => $values,
    ));
    return $response['repository'];
  }

  /**
   * Set the visibility of a repostory to public
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $repo             the name of the repo
   * @return  array                     informations about the repo
   */
  public function setPublic($repo) {
    $response = $this
      ->get('repos/set/public/' . urlencode($repo));
    return $response['repository'];
  }

  /**
   * Set the visibility of a repostory to private
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $repo             the name of the repo
   * @return  array                     informations about the repo
   */
  public function setPrivate($repo) {
    $response = $this
      ->get('repos/set/private/' . urlencode($repo));
    return $response['repository'];
  }

  /**
   * Get the list of deploy keys for a repository
   *
   * @param   string  $repo             the name of the repo
   * @return  array                     the list of deploy keys
   */
  public function getDeployKeys($repo) {
    $response = $this
      ->get('repos/keys/' . urlencode($repo));
    return $response['public_keys'];
  }

  /**
   * Add a deploy key for a repository
   *
   * @param   string  $repo             the name of the repo
   * @param   string  $title            the title of the key
   * @param   string  $key              the public key data
   * @return  array                     the list of deploy keys
   */
  public function addDeployKey($repo, $title, $key) {
    $response = $this
      ->post('repos/key/' . urlencode($repo) . '/add', array(
      'title' => $title,
      'key' => $key,
    ));
    return $response['public_keys'];
  }

  /**
   * Delete a deploy key from a repository
   *
   * @param   string  $repo             the name of the repo
   * @param   string  $id               the the id of the key to remove
   * @return  array                     the list of deploy keys
   */
  public function removeDeployKey($repo, $id) {
    $response = $this
      ->post('repos/key/' . urlencode($repo) . '/remove', array(
      'id' => $id,
    ));
    return $response['public_keys'];
  }

  /**
   * Get the collaborators of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     list of the repo collaborators
   */
  public function getRepoCollaborators($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/collaborators');
    return $response['collaborators'];
  }

  /**
   * Add a collaborator to a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $repo             the name of the repo
   * @param   string  $username         the user who should be added as a collaborator
   * @return  array                     list of the repo collaborators
   */
  public function addRepoCollaborator($repo, $username) {
    $response = $this
      ->post('repos/collaborators/' . urlencode($repo) . '/add/' . urlencode($username));
    return $response['collaborators'];
  }

  /**
   * Delete a collaborator from a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $repo             the name of the repo
   * @param   string  $username         the user who should be removed as a collaborator
   * @return  array                     list of the repo collaborators
   */
  public function removeRepoCollaborator($repo, $username) {
    $response = $this
      ->post('repos/collaborators/' . urlencode($repo) . '/remove/' . urlencode($username));
    return $response['collaborators'];
  }

  /**
   * Make the authenticated user watch a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     informations about the repo
   */
  public function watch($username, $repo) {
    $response = $this
      ->get('repos/watch/' . urlencode($username) . '/' . urlencode($repo));
    return $response['repository'];
  }

  /**
   * Make the authenticated user unwatch a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     informations about the repo
   */
  public function unwatch($username, $repo) {
    $response = $this
      ->get('repos/unwatch/' . urlencode($username) . '/' . urlencode($repo));
    return $response['repository'];
  }

  /**
   * Make the authenticated user fork a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     informations about the newly forked repo
   */
  public function fork($username, $repo) {
    $response = $this
      ->get('repos/fork/' . urlencode($username) . '/' . urlencode($repo));
    return $response['repository'];
  }

  /**
   * Get the tags of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     list of the repo tags
   */
  public function getRepoTags($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/tags');
    return $response['tags'];
  }

  /**
   * Get the branches of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the username
   * @param   string  $repo             the name of the repo
   * @return  array                     list of the repo branches
   */
  public function getRepoBranches($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/branches');
    return $response['branches'];
  }

  /**
   * Get the watchers of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     list of the repo watchers
   */
  public function getRepoWatchers($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/watchers');
    return $response['watchers'];
  }

  /**
   * Get the network (a list of forks) of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     list of the repo forks
   */
  public function getRepoNetwork($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/network');
    return $response['network'];
  }

  /**
   * Get the language breakdown of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @return  array                     list of the languages
   */
  public function getRepoLanguages($username, $repo) {
    $response = $this
      ->get('repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/languages');
    return $response['languages'];
  }

  /**
   * Get the contributors of a repository
   * http://develop.github.com/p/repo.html
   *
   * @param   string  $username         the user who owns the repo
   * @param   string  $repo             the name of the repo
   * @param   boolean $includingNonGithubUsers by default, the list only shows GitHub users. You can include non-users too by setting this to true
   * @return  array                     list of the repo contributors
   */
  public function getRepoContributors($username, $repo, $includingNonGithubUsers = false) {
    $url = 'repos/show/' . urlencode($username) . '/' . urlencode($repo) . '/contributors';
    if ($includingNonGithubUsers) {
      $url .= '/anon';
    }
    $response = $this
      ->get($url);
    return $response['contributors'];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Github_Api::$client private property The client
Github_Api::get protected function Call any path, GET method Ex: $api->get('repos/show/my-username/my-repo')
Github_Api::post protected function Call any path, POST method Ex: $api->post('repos/show/my-username', array('email' => 'my-new-email@provider.org'))
Github_Api::__construct public function
Github_Api_Repo::addDeployKey public function Add a deploy key for a repository
Github_Api_Repo::addRepoCollaborator public function Add a collaborator to a repository http://develop.github.com/p/repo.html
Github_Api_Repo::create public function create repo http://develop.github.com/p/repo.html
Github_Api_Repo::delete public function delete repo http://develop.github.com/p/repo.html
Github_Api_Repo::fork public function Make the authenticated user fork a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getDeployKeys public function Get the list of deploy keys for a repository
Github_Api_Repo::getPushableRepos public function Get a list of the repositories that the authenticated user can push to
Github_Api_Repo::getRepoBranches public function Get the branches of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getRepoCollaborators public function Get the collaborators of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getRepoContributors public function Get the contributors of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getRepoLanguages public function Get the language breakdown of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getRepoNetwork public function Get the network (a list of forks) of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getRepoTags public function Get the tags of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getRepoWatchers public function Get the watchers of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::getUserRepos public function Get the repositories of a user http://develop.github.com/p/repo.html
Github_Api_Repo::removeDeployKey public function Delete a deploy key from a repository
Github_Api_Repo::removeRepoCollaborator public function Delete a collaborator from a repository http://develop.github.com/p/repo.html
Github_Api_Repo::search public function Search repos by keyword http://develop.github.com/p/repo.html
Github_Api_Repo::setPrivate public function Set the visibility of a repostory to private http://develop.github.com/p/repo.html
Github_Api_Repo::setPublic public function Set the visibility of a repostory to public http://develop.github.com/p/repo.html
Github_Api_Repo::setRepoInfo public function Set information of a repository http://develop.github.com/p/repo.html
Github_Api_Repo::show public function Get extended information about a repository by its username and repo name http://develop.github.com/p/repo.html
Github_Api_Repo::unwatch public function Make the authenticated user unwatch a repository http://develop.github.com/p/repo.html
Github_Api_Repo::watch public function Make the authenticated user watch a repository http://develop.github.com/p/repo.html