wishthis/vendor/knplabs/github-api/lib/Github/Api/User.php
2022-01-24 09:08:35 +01:00

249 lines
7.4 KiB
PHP

<?php
namespace Github\Api;
/**
* Searching users, getting user information.
*
* @link http://developer.github.com/v3/users/
*
* @author Joseph Bielawski <stloyd@gmail.com>
* @author Thibault Duplessis <thibault.duplessis at gmail dot com>
*/
class User extends AbstractApi
{
/**
* Request all users.
*
* @link https://developer.github.com/v3/users/#get-all-users
*
* @param int|null $id ID of the last user that you've seen
*
* @return array list of users found
*/
public function all($id = null)
{
if (!is_int($id)) {
return $this->get('/users');
}
return $this->get('/users', ['since' => $id]);
}
/**
* Get extended information about a user by its username.
*
* @link http://developer.github.com/v3/users/
*
* @param string $username the username to show
*
* @return array information about the user
*/
public function show($username)
{
return $this->get('/users/'.rawurlencode($username));
}
/**
* Get extended information about a user 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/users/
*
* @param int $id the id of the user to show
*
* @return array information about the user
*/
public function showById($id)
{
return $this->get('/user/'.$id);
}
/**
* Get extended information about a user by its username.
*
* @link https://developer.github.com/v3/orgs/
*
* @param string $username the username to show
*
* @return array information about organizations that user belongs to
*/
public function organizations($username)
{
return $this->get('/users/'.rawurlencode($username).'/orgs');
}
/**
* Get user organizations.
*
* @link https://developer.github.com/v3/orgs/#list-your-organizations
*
* @return array information about organizations that authenticated user belongs to
*/
public function orgs()
{
return $this->get('/user/orgs');
}
/**
* Request the users that a specific user is following.
*
* @link http://developer.github.com/v3/users/followers/
*
* @param string $username the username
* @param array $parameters parameters for the query string
* @param array $requestHeaders additional headers to set in the request
*
* @return array list of followed users
*/
public function following($username, array $parameters = [], array $requestHeaders = [])
{
return $this->get('/users/'.rawurlencode($username).'/following', $parameters, $requestHeaders);
}
/**
* Request the users following a specific user.
*
* @link http://developer.github.com/v3/users/followers/
*
* @param string $username the username
* @param array $parameters parameters for the query string
* @param array $requestHeaders additional headers to set in the request
*
* @return array list of following users
*/
public function followers($username, array $parameters = [], array $requestHeaders = [])
{
return $this->get('/users/'.rawurlencode($username).'/followers', $parameters, $requestHeaders);
}
/**
* Request starred repositories that a specific user has starred.
*
* @link http://developer.github.com/v3/activity/starring/
*
* @param string $username the username
* @param int $page the page number of the paginated result set
* @param int $perPage the number of results per page
* @param string $sort sort by (possible values: created, updated)
* @param string $direction direction of sort (possible values: asc, desc)
*
* @return array list of starred repositories
*/
public function starred($username, $page = 1, $perPage = 30, $sort = 'created', $direction = 'desc')
{
return $this->get('/users/'.rawurlencode($username).'/starred', [
'page' => $page,
'per_page' => $perPage,
'sort' => $sort,
'direction' => $direction,
]);
}
/**
* Request the repository that a specific user is watching.
*
* @link http://developer.github.com/v3/activity/watching/
*
* @param string $username the username
*
* @return array list of watched repositories
*/
public function subscriptions($username)
{
return $this->get('/users/'.rawurlencode($username).'/subscriptions');
}
/**
* List public repositories for the specified user.
*
* @link https://developer.github.com/v3/repos/#list-user-repositories
*
* @param string $username the username
* @param string $type role in the repository
* @param string $sort sort by
* @param string $direction direction of sort, asc or desc
* @param string $visibility visibility of repository
* @param string $affiliation relationship to repository
*
* @return array list of the user repositories
*/
public function repositories($username, $type = 'owner', $sort = 'full_name', $direction = 'asc', $visibility = 'all', $affiliation = 'owner,collaborator,organization_member')
{
return $this->get('/users/'.rawurlencode($username).'/repos', [
'type' => $type,
'sort' => $sort,
'direction' => $direction,
'visibility' => $visibility,
'affiliation' => $affiliation,
]);
}
/**
* List repositories that are accessible to the authenticated user.
*
* @link https://developer.github.com/v3/repos/#list-your-repositories
*
* @param array $params visibility, affiliation, type, sort, direction
*
* @return array list of the user repositories
*/
public function myRepositories(array $params = [])
{
return $this->get('/user/repos', $params);
}
/**
* Get the public gists for a user.
*
* @link http://developer.github.com/v3/gists/
*
* @param string $username the username
*
* @return array list of the user gists
*/
public function gists($username)
{
return $this->get('/users/'.rawurlencode($username).'/gists');
}
/**
* Get the public keys for a user.
*
* @link http://developer.github.com/v3/users/keys/#list-public-keys-for-a-user
*
* @param string $username the username
*
* @return array list of the user public keys
*/
public function keys($username)
{
return $this->get('/users/'.rawurlencode($username).'/keys');
}
/**
* List events performed by a user.
*
* @link http://developer.github.com/v3/activity/events/#list-public-events-performed-by-a-user
*
* @param string $username
*
* @return array
*/
public function publicEvents($username)
{
return $this->get('/users/'.rawurlencode($username).'/events/public');
}
/**
* List events performed by an authenticated user.
*
* @link https://docs.github.com/en/rest/reference/activity#list-events-for-the-authenticated-user
*
* @return array
*/
public function events(string $username)
{
return $this->get('/users/'.rawurlencode($username).'/events');
}
}