sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							685 lines
						
					
					
						
							21 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							685 lines
						
					
					
						
							21 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace Github\Api;
							 | 
						|
								
							 | 
						|
								use Github\Api\Repository\Collaborators;
							 | 
						|
								use Github\Api\Repository\Comments;
							 | 
						|
								use Github\Api\Repository\Commits;
							 | 
						|
								use Github\Api\Repository\Contents;
							 | 
						|
								use Github\Api\Repository\DeployKeys;
							 | 
						|
								use Github\Api\Repository\Downloads;
							 | 
						|
								use Github\Api\Repository\Forks;
							 | 
						|
								use Github\Api\Repository\Hooks;
							 | 
						|
								use Github\Api\Repository\Labels;
							 | 
						|
								use Github\Api\Repository\Projects;
							 | 
						|
								use Github\Api\Repository\Protection;
							 | 
						|
								use Github\Api\Repository\Releases;
							 | 
						|
								use Github\Api\Repository\Stargazers;
							 | 
						|
								use Github\Api\Repository\Statuses;
							 | 
						|
								use Github\Api\Repository\Traffic;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Searching repositories, getting repository information
							 | 
						|
								 * and managing repository information for authenticated users.
							 | 
						|
								 *
							 | 
						|
								 * @link   http://developer.github.com/v3/repos/
							 | 
						|
								 *
							 | 
						|
								 * @author Joseph Bielawski <stloyd@gmail.com>
							 | 
						|
								 * @author Thibault Duplessis <thibault.duplessis at gmail dot com>
							 | 
						|
								 */
							 | 
						|
								class Repo extends AbstractApi
							 | 
						|
								{
							 | 
						|
								    use AcceptHeaderTrait;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Search repositories by keyword.
							 | 
						|
								     *
							 | 
						|
								     * @deprecated This method is deprecated use the Search api instead. See https://developer.github.com/v3/search/legacy/#legacy-search-api-is-deprecated
							 | 
						|
								     * @link http://developer.github.com/v3/search/#search-repositories
							 | 
						|
								     *
							 | 
						|
								     * @param string $keyword the search query
							 | 
						|
								     * @param array  $params
							 | 
						|
								     *
							 | 
						|
								     * @return array list of found repositories
							 | 
						|
								     */
							 | 
						|
								    public function find($keyword, array $params = [])
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/legacy/repos/search/'.rawurlencode($keyword), array_merge(['start_page' => 1], $params));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * List all public repositories.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/repos/#list-all-public-repositories
							 | 
						|
								     *
							 | 
						|
								     * @param int|null $id The integer ID of the last Repository that you’ve seen.
							 | 
						|
								     *
							 | 
						|
								     * @return array list of users found
							 | 
						|
								     */
							 | 
						|
								    public function all($id = null)
							 | 
						|
								    {
							 | 
						|
								        if (!is_int($id)) {
							 | 
						|
								            return $this->get('/repositories');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $this->get('/repositories?since='.rawurldecode($id));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the last year of commit activity for a repository grouped by week.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/statistics/#commit-activity
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array commit activity grouped by week
							 | 
						|
								     */
							 | 
						|
								    public function activity($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/stats/commit_activity');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get contributor commit statistics for a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/statistics/#contributors
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array list of contributors and their commit statistics
							 | 
						|
								     */
							 | 
						|
								    public function statistics($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/stats/contributors');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get a weekly aggregate of the number of additions and deletions pushed to a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/statistics/#code-frequency
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array list of weeks and their commit statistics
							 | 
						|
								     */
							 | 
						|
								    public function frequency($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/stats/code_frequency');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the weekly commit count for the repository owner and everyone else.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/statistics/#participation
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array list of weekly commit count grouped by 'all' and 'owner'
							 | 
						|
								     */
							 | 
						|
								    public function participation($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/stats/participation');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * List all repositories for an organization.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/#list-organization-repositories
							 | 
						|
								     *
							 | 
						|
								     * @param string $organization the name of the organization
							 | 
						|
								     * @param array  $params
							 | 
						|
								     *
							 | 
						|
								     * @return array list of organization repositories
							 | 
						|
								     */
							 | 
						|
								    public function org($organization, array $params = [])
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/orgs/'.$organization.'/repos', array_merge(['start_page' => 1], $params));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get extended information about a repository by its username and repository name.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array information about the repository
							 | 
						|
								     */
							 | 
						|
								    public function show($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get extended information about a repository by its id.
							 | 
						|
								     * Note: at time of writing this is an undocumented feature but GitHub support have advised that it can be relied on.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     * @link https://github.com/piotrmurach/github/issues/283
							 | 
						|
								     * @link https://github.com/piotrmurach/github/issues/282
							 | 
						|
								     *
							 | 
						|
								     * @param int $id the id of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array information about the repository
							 | 
						|
								     */
							 | 
						|
								    public function showById($id)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repositories/'.rawurlencode($id));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Create repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string      $name         name of the repository
							 | 
						|
								     * @param string      $description  repository description
							 | 
						|
								     * @param string      $homepage     homepage url
							 | 
						|
								     * @param bool        $public       `true` for public, `false` for private
							 | 
						|
								     * @param null|string $organization username of organization if applicable
							 | 
						|
								     * @param bool        $hasIssues    `true` to enable issues for this repository, `false` to disable them
							 | 
						|
								     * @param bool        $hasWiki      `true` to enable the wiki for this repository, `false` to disable it
							 | 
						|
								     * @param bool        $hasDownloads `true` to enable downloads for this repository, `false` to disable them
							 | 
						|
								     * @param int         $teamId       The id of the team that will be granted access to this repository. This is only valid when creating a repo in an organization.
							 | 
						|
								     * @param bool        $autoInit     `true` to create an initial commit with empty README, `false` for no initial commit
							 | 
						|
								     * @param bool        $hasProjects  `true` to enable projects for this repository or false to disable them.
							 | 
						|
								     *
							 | 
						|
								     * @return array returns repository data
							 | 
						|
								     */
							 | 
						|
								    public function create(
							 | 
						|
								        $name,
							 | 
						|
								        $description = '',
							 | 
						|
								        $homepage = '',
							 | 
						|
								        $public = true,
							 | 
						|
								        $organization = null,
							 | 
						|
								        $hasIssues = false,
							 | 
						|
								        $hasWiki = false,
							 | 
						|
								        $hasDownloads = false,
							 | 
						|
								        $teamId = null,
							 | 
						|
								        $autoInit = false,
							 | 
						|
								        $hasProjects = true
							 | 
						|
								    ) {
							 | 
						|
								        $path = null !== $organization ? '/orgs/'.$organization.'/repos' : '/user/repos';
							 | 
						|
								
							 | 
						|
								        $parameters = [
							 | 
						|
								            'name'          => $name,
							 | 
						|
								            'description'   => $description,
							 | 
						|
								            'homepage'      => $homepage,
							 | 
						|
								            'private'       => !$public,
							 | 
						|
								            'has_issues'    => $hasIssues,
							 | 
						|
								            'has_wiki'      => $hasWiki,
							 | 
						|
								            'has_downloads' => $hasDownloads,
							 | 
						|
								            'auto_init'     => $autoInit,
							 | 
						|
								            'has_projects' => $hasProjects,
							 | 
						|
								        ];
							 | 
						|
								
							 | 
						|
								        if ($organization && $teamId) {
							 | 
						|
								            $parameters['team_id'] = $teamId;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $this->post($path, $parameters);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Set information of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     * @param array  $values     the key => value pairs to post
							 | 
						|
								     *
							 | 
						|
								     * @return array information about the repository
							 | 
						|
								     */
							 | 
						|
								    public function update($username, $repository, array $values)
							 | 
						|
								    {
							 | 
						|
								        return $this->patch('/repos/'.rawurlencode($username).'/'.rawurlencode($repository), $values);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Delete a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return mixed null on success, array on error with 'message'
							 | 
						|
								     */
							 | 
						|
								    public function remove($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->delete('/repos/'.rawurlencode($username).'/'.rawurlencode($repository));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the readme content for a repository by its username and repository name.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/contents/#get-the-readme
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     * @param string $format     one of formats: "raw", "html", or "v3+json"
							 | 
						|
								     *
							 | 
						|
								     * @return string|array the readme content
							 | 
						|
								     */
							 | 
						|
								    public function readme($username, $repository, $format = 'raw')
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/readme', [], [
							 | 
						|
								            'Accept' => "application/vnd.github.$format",
							 | 
						|
								        ]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the collaborators of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/collaborators/
							 | 
						|
								     *
							 | 
						|
								     * @return Collaborators
							 | 
						|
								     */
							 | 
						|
								    public function collaborators()
							 | 
						|
								    {
							 | 
						|
								        return new Collaborators($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the comments of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/comments/
							 | 
						|
								     *
							 | 
						|
								     * @return Comments
							 | 
						|
								     */
							 | 
						|
								    public function comments()
							 | 
						|
								    {
							 | 
						|
								        return new Comments($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the commits of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/commits/
							 | 
						|
								     *
							 | 
						|
								     * @return Commits
							 | 
						|
								     */
							 | 
						|
								    public function commits()
							 | 
						|
								    {
							 | 
						|
								        return new Commits($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the content of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/contents/
							 | 
						|
								     *
							 | 
						|
								     * @return Contents
							 | 
						|
								     */
							 | 
						|
								    public function contents()
							 | 
						|
								    {
							 | 
						|
								        return new Contents($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the content of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/downloads/
							 | 
						|
								     *
							 | 
						|
								     * @return Downloads
							 | 
						|
								     */
							 | 
						|
								    public function downloads()
							 | 
						|
								    {
							 | 
						|
								        return new Downloads($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the releases of a repository (Currently Undocumented).
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @return Releases
							 | 
						|
								     */
							 | 
						|
								    public function releases()
							 | 
						|
								    {
							 | 
						|
								        return new Releases($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the deploy keys of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/keys/
							 | 
						|
								     *
							 | 
						|
								     * @return DeployKeys
							 | 
						|
								     */
							 | 
						|
								    public function keys()
							 | 
						|
								    {
							 | 
						|
								        return new DeployKeys($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the forks of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/forks/
							 | 
						|
								     *
							 | 
						|
								     * @return Forks
							 | 
						|
								     */
							 | 
						|
								    public function forks()
							 | 
						|
								    {
							 | 
						|
								        return new Forks($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the stargazers of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/activity/starring/#list-stargazers
							 | 
						|
								     *
							 | 
						|
								     * @return Stargazers
							 | 
						|
								     */
							 | 
						|
								    public function stargazers()
							 | 
						|
								    {
							 | 
						|
								        return new Stargazers($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the hooks of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/issues/jooks/
							 | 
						|
								     *
							 | 
						|
								     * @return Hooks
							 | 
						|
								     */
							 | 
						|
								    public function hooks()
							 | 
						|
								    {
							 | 
						|
								        return new Hooks($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the labels of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/issues/labels/
							 | 
						|
								     *
							 | 
						|
								     * @return Labels
							 | 
						|
								     */
							 | 
						|
								    public function labels()
							 | 
						|
								    {
							 | 
						|
								        return new Labels($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the statuses of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/statuses/
							 | 
						|
								     *
							 | 
						|
								     * @return Statuses
							 | 
						|
								     */
							 | 
						|
								    public function statuses()
							 | 
						|
								    {
							 | 
						|
								        return new Statuses($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the branch(es) of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the username
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     * @param string $branch     the name of the branch
							 | 
						|
								     *
							 | 
						|
								     * @return array list of the repository branches
							 | 
						|
								     */
							 | 
						|
								    public function branches($username, $repository, $branch = null)
							 | 
						|
								    {
							 | 
						|
								        $url = '/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/branches';
							 | 
						|
								        if (null !== $branch) {
							 | 
						|
								            $url .= '/'.rawurlencode($branch);
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $this->get($url);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Manage the protection of a repository branch.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/repos/branches/#get-branch-protection
							 | 
						|
								     *
							 | 
						|
								     * @return Protection
							 | 
						|
								     */
							 | 
						|
								    public function protection()
							 | 
						|
								    {
							 | 
						|
								        return new Protection($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the contributors of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username           the user who owns the repository
							 | 
						|
								     * @param string $repository         the name of the repository
							 | 
						|
								     * @param bool   $includingAnonymous 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 contributors($username, $repository, $includingAnonymous = false)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/contributors', [
							 | 
						|
								            'anon' => $includingAnonymous ?: null,
							 | 
						|
								        ]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the language breakdown of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     *
							 | 
						|
								     * @return array list of the languages
							 | 
						|
								     */
							 | 
						|
								    public function languages($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/languages');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the tags of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repository
							 | 
						|
								     * @param string $repository the name of the repository
							 | 
						|
								     * @param array  $params     the additional parameters like milestone, assignees, labels, sort, direction
							 | 
						|
								     *
							 | 
						|
								     * @return array list of the repository tags
							 | 
						|
								     */
							 | 
						|
								    public function tags($username, $repository, array $params = [])
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/tags', $params);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the teams of a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username   the user who owns the repo
							 | 
						|
								     * @param string $repository the name of the repo
							 | 
						|
								     *
							 | 
						|
								     * @return array list of the languages
							 | 
						|
								     */
							 | 
						|
								    public function teams($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/teams');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @deprecated see subscribers method
							 | 
						|
								     *
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     * @param int    $page
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function watchers($username, $repository, $page = 1)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/watchers', [
							 | 
						|
								            'page' => $page,
							 | 
						|
								        ]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     * @param int    $page
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function subscribers($username, $repository, $page = 1)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/subscribers', [
							 | 
						|
								            'page' => $page,
							 | 
						|
								        ]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Perform a merge.
							 | 
						|
								     *
							 | 
						|
								     * @link http://developer.github.com/v3/repos/merging/
							 | 
						|
								     *
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     * @param string $base       The name of the base branch that the head will be merged into.
							 | 
						|
								     * @param string $head       The head to merge. This can be a branch name or a commit SHA1.
							 | 
						|
								     * @param string $message    Commit message to use for the merge commit. If omitted, a default message will be used.
							 | 
						|
								     *
							 | 
						|
								     * @return array|null
							 | 
						|
								     */
							 | 
						|
								    public function merge($username, $repository, $base, $head, $message = null)
							 | 
						|
								    {
							 | 
						|
								        $parameters = [
							 | 
						|
								            'base' => $base,
							 | 
						|
								            'head' => $head,
							 | 
						|
								        ];
							 | 
						|
								
							 | 
						|
								        if (is_string($message)) {
							 | 
						|
								            $parameters['commit_message'] = $message;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $this->post('/repos/'.rawurlencode($username).'/'.rawurlencode($repository).'/merges', $parameters);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function milestones($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurldecode($username).'/'.rawurldecode($repository).'/milestones');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function projects()
							 | 
						|
								    {
							 | 
						|
								        return new Projects($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function traffic()
							 | 
						|
								    {
							 | 
						|
								        return new Traffic($this->client);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     * @param int    $page
							 | 
						|
								     *
							 | 
						|
								     * @return array|string
							 | 
						|
								     *
							 | 
						|
								     * @see https://developer.github.com/v3/activity/events/#list-repository-events
							 | 
						|
								     */
							 | 
						|
								    public function events($username, $repository, $page = 1)
							 | 
						|
								    {
							 | 
						|
								        return $this->get('/repos/'.rawurldecode($username).'/'.rawurldecode($repository).'/events', ['page' => $page]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Get the contents of a repository's code of conduct.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/codes_of_conduct/#get-the-contents-of-a-repositorys-code-of-conduct
							 | 
						|
								     *
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function codeOfConduct($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        //This api is in preview mode, so set the correct accept-header
							 | 
						|
								        $this->acceptHeaderValue = 'application/vnd.github.scarlet-witch-preview+json';
							 | 
						|
								
							 | 
						|
								        return $this->get('/repos/'.rawurldecode($username).'/'.rawurldecode($repository).'/community/code_of_conduct');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * List all topics for a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/repos/#list-all-topics-for-a-repository
							 | 
						|
								     *
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function topics($username, $repository)
							 | 
						|
								    {
							 | 
						|
								        //This api is in preview mode, so set the correct accept-header
							 | 
						|
								        $this->acceptHeaderValue = 'application/vnd.github.mercy-preview+json';
							 | 
						|
								
							 | 
						|
								        return $this->get('/repos/'.rawurldecode($username).'/'.rawurldecode($repository).'/topics');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Replace all topics for a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/repos/#replace-all-topics-for-a-repository
							 | 
						|
								     *
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     * @param array  $topics
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function replaceTopics($username, $repository, array $topics)
							 | 
						|
								    {
							 | 
						|
								        //This api is in preview mode, so set the correct accept-header
							 | 
						|
								        $this->acceptHeaderValue = 'application/vnd.github.mercy-preview+json';
							 | 
						|
								
							 | 
						|
								        return $this->put('/repos/'.rawurldecode($username).'/'.rawurldecode($repository).'/topics', ['names' => $topics]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Transfer a repository.
							 | 
						|
								     *
							 | 
						|
								     * @link https://developer.github.com/v3/repos/#transfer-a-repository
							 | 
						|
								     *
							 | 
						|
								     * @param string $username
							 | 
						|
								     * @param string $repository
							 | 
						|
								     * @param string $newOwner
							 | 
						|
								     * @param array  $teamId
							 | 
						|
								     *
							 | 
						|
								     * @return array
							 | 
						|
								     */
							 | 
						|
								    public function transfer($username, $repository, $newOwner, $teamId = [])
							 | 
						|
								    {
							 | 
						|
								        //This api is in preview mode, so set the correct accept-header
							 | 
						|
								        $this->acceptHeaderValue = 'application/vnd.github.nightshade-preview+json';
							 | 
						|
								
							 | 
						|
								        return $this->post('/repos/'.rawurldecode($username).'/'.rawurldecode($repository).'/transfer', ['new_owner' => $newOwner, 'team_id' => $teamId]);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |