%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/vendor/m4tthumphrey/php-gitlab-api/src/Api/ |
Upload File : |
<?php
declare(strict_types=1);
/*
* This file is part of the Gitlab API library.
*
* (c) Matt Humphrey <matth@windsor-telecom.co.uk>
* (c) Graham Campbell <hello@gjcampbell.co.uk>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Gitlab\Api;
use Symfony\Component\OptionsResolver\Options;
class Users extends AbstractApi
{
/**
* @param array $parameters {
*
* @var string $search search for user by email or username
* @var string $username lookup for user by username
* @var bool $external search for external users only
* @var string $extern_uid lookup for users by external uid
* @var string $provider lookup for users by provider
* @var \DateTimeInterface $created_before return users created before the given time (inclusive)
* @var \DateTimeInterface $created_after return users created after the given time (inclusive)
* @var bool $active Return only active users. It does not support filtering inactive users.
* @var bool $blocked Return only blocked users. It does not support filtering non-blocked users.
* }
*
* @return mixed
*/
public function all(array $parameters = [])
{
$resolver = $this->createOptionsResolver();
$datetimeNormalizer = function (Options $resolver, \DateTimeInterface $value): string {
return $value->format('c');
};
$resolver->setDefined('search');
$resolver->setDefined('username');
$resolver->setDefined('external')
->setAllowedTypes('external', 'bool')
;
$resolver->setDefined('extern_uid');
$resolver->setDefined('provider');
$resolver->setDefined('created_before')
->setAllowedTypes('created_before', \DateTimeInterface::class)
->setNormalizer('created_before', $datetimeNormalizer)
;
$resolver->setDefined('created_after')
->setAllowedTypes('created_after', \DateTimeInterface::class)
->setNormalizer('created_after', $datetimeNormalizer)
;
$resolver->setDefined('active')
->setAllowedTypes('active', 'bool')
->setAllowedValues('active', true)
;
$resolver->setDefined('blocked')
->setAllowedTypes('blocked', 'bool')
->setAllowedValues('blocked', true)
;
return $this->get('users', $resolver->resolve($parameters));
}
/**
* @param int $id
*
* @return mixed
*/
public function show(int $id)
{
return $this->get('users/'.self::encodePath($id));
}
/**
* @param int $id
* @param array $parameters {
*
* @var string $type Filter memberships by type. Can be either Project or Namespace
* }
*
* @return mixed
*/
public function usersMemberships(int $id, array $parameters = [])
{
$resolver = $this->createOptionsResolver();
$resolver->setDefined('type')
->setAllowedValues('type', ['Project', 'Namespace'])
;
return $this->get('users/'.self::encodePath($id).'/memberships', $resolver->resolve($parameters));
}
/**
* @param int $id
* @param array $parameters {
*
* @var bool $archived limit by archived status
* @var string $visibility limit by visibility public, internal, or private
* @var string $order_by Return projects ordered by id, name, path, created_at, updated_at,
* or last_activity_at fields (default is created_at)
* @var string $sort Return projects sorted in asc or desc order (default is desc)
* @var string $search return list of projects matching the search criteria
* @var bool $simple return only the ID, URL, name, and path of each project
* @var bool $owned limit by projects owned by the current user
* @var bool $membership limit by projects that the current user is a member of
* @var bool $starred limit by projects starred by the current user
* @var bool $statistics include project statistics
* @var bool $with_issues_enabled limit by enabled issues feature
* @var bool $with_merge_requests_enabled limit by enabled merge requests feature
* @var int $min_access_level Limit by current user minimal access level
* }
*
* @return mixed
*/
public function usersProjects(int $id, array $parameters = [])
{
$resolver = $this->createOptionsResolver();
$booleanNormalizer = function (Options $resolver, $value): string {
return $value ? 'true' : 'false';
};
$resolver->setDefined('archived')
->setAllowedTypes('archived', 'bool')
->setNormalizer('archived', $booleanNormalizer)
;
$resolver->setDefined('visibility')
->setAllowedValues('visibility', ['public', 'internal', 'private'])
;
$resolver->setDefined('order_by')
->setAllowedValues('order_by', ['id', 'name', 'path', 'created_at', 'updated_at', 'last_activity_at'])
;
$resolver->setDefined('sort')
->setAllowedValues('sort', ['asc', 'desc'])
;
$resolver->setDefined('search');
$resolver->setDefined('simple')
->setAllowedTypes('simple', 'bool')
->setNormalizer('simple', $booleanNormalizer)
;
$resolver->setDefined('owned')
->setAllowedTypes('owned', 'bool')
->setNormalizer('owned', $booleanNormalizer)
;
$resolver->setDefined('membership')
->setAllowedTypes('membership', 'bool')
->setNormalizer('membership', $booleanNormalizer)
;
$resolver->setDefined('starred')
->setAllowedTypes('starred', 'bool')
->setNormalizer('starred', $booleanNormalizer)
;
$resolver->setDefined('statistics')
->setAllowedTypes('statistics', 'bool')
->setNormalizer('statistics', $booleanNormalizer)
;
$resolver->setDefined('with_issues_enabled')
->setAllowedTypes('with_issues_enabled', 'bool')
->setNormalizer('with_issues_enabled', $booleanNormalizer)
;
$resolver->setDefined('with_merge_requests_enabled')
->setAllowedTypes('with_merge_requests_enabled', 'bool')
->setNormalizer('with_merge_requests_enabled', $booleanNormalizer)
;
$resolver->setDefined('min_access_level')
->setAllowedValues('min_access_level', [null, 10, 20, 30, 40, 50])
;
return $this->get('users/'.self::encodePath($id).'/projects', $resolver->resolve($parameters));
}
/**
* @param int $id
* @param array $parameters {
*
* @var bool $archived limit by archived status
* @var string $visibility limit by visibility public, internal, or private
* @var string $order_by Return projects ordered by id, name, path, created_at, updated_at,
* or last_activity_at fields (default is created_at)
* @var string $sort Return projects sorted in asc or desc order (default is desc)
* @var string $search return list of projects matching the search criteria
* @var bool $simple return only the ID, URL, name, and path of each project
* @var bool $owned limit by projects owned by the current user
* @var bool $membership limit by projects that the current user is a member of
* @var bool $starred limit by projects starred by the current user
* @var bool $statistics include project statistics
* @var bool $with_issues_enabled limit by enabled issues feature
* @var bool $with_merge_requests_enabled limit by enabled merge requests feature
* @var int $min_access_level Limit by current user minimal access level
* @var bool $with_custom_attributes Include custom attributes in response (administrator only)
* }
*
* @return mixed
*/
public function usersStarredProjects(int $id, array $parameters = [])
{
$resolver = $this->createOptionsResolver();
$booleanNormalizer = function (Options $resolver, $value): string {
return $value ? 'true' : 'false';
};
$resolver->setDefined('archived')
->setAllowedTypes('archived', 'bool')
->setNormalizer('archived', $booleanNormalizer)
;
$resolver->setDefined('visibility')
->setAllowedValues('visibility', ['public', 'internal', 'private'])
;
$resolver->setDefined('order_by')
->setAllowedValues('order_by', ['id', 'name', 'path', 'created_at', 'updated_at', 'last_activity_at'])
;
$resolver->setDefined('sort')
->setAllowedValues('sort', ['asc', 'desc'])
;
$resolver->setDefined('search');
$resolver->setDefined('simple')
->setAllowedTypes('simple', 'bool')
->setNormalizer('simple', $booleanNormalizer)
;
$resolver->setDefined('owned')
->setAllowedTypes('owned', 'bool')
->setNormalizer('owned', $booleanNormalizer)
;
$resolver->setDefined('membership')
->setAllowedTypes('membership', 'bool')
->setNormalizer('membership', $booleanNormalizer)
;
$resolver->setDefined('starred')
->setAllowedTypes('starred', 'bool')
->setNormalizer('starred', $booleanNormalizer)
;
$resolver->setDefined('statistics')
->setAllowedTypes('statistics', 'bool')
->setNormalizer('statistics', $booleanNormalizer)
;
$resolver->setDefined('with_issues_enabled')
->setAllowedTypes('with_issues_enabled', 'bool')
->setNormalizer('with_issues_enabled', $booleanNormalizer)
;
$resolver->setDefined('with_merge_requests_enabled')
->setAllowedTypes('with_merge_requests_enabled', 'bool')
->setNormalizer('with_merge_requests_enabled', $booleanNormalizer)
;
$resolver->setDefined('min_access_level')
->setAllowedValues('min_access_level', [null, 10, 20, 30, 40, 50])
;
$resolver->setDefined('with_custom_attributes')
->setAllowedTypes('with_custom_attributes', 'bool')
->setNormalizer('with_custom_attributes', $booleanNormalizer)
;
return $this->get('users/'.self::encodePath($id).'/starred_projects', $resolver->resolve($parameters));
}
/**
* @return mixed
*/
public function user()
{
return $this->get('user');
}
/**
* @param string $email
* @param string $password
* @param array $params
*
* @return mixed
*/
public function create(string $email, string $password, array $params = [])
{
$params['email'] = $email;
$params['password'] = $password;
return $this->post('users', $params);
}
/**
* @param int $id
* @param array $params
* @param array $files
*
* @return mixed
*/
public function update(int $id, array $params, array $files = [])
{
return $this->put('users/'.self::encodePath($id), $params, [], $files);
}
/**
* @param int $id
* @param array $params {
*
* @var bool $hard_delete If true, contributions that would usually be moved to the ghost user are
* deleted instead, as well as groups owned solely by this user.
* }
*
* @return mixed
*/
public function remove(int $id, array $params = [])
{
return $this->delete('users/'.self::encodePath($id), $params);
}
/**
* @param int $id
*
* @return mixed
*/
public function block(int $id)
{
return $this->post('users/'.self::encodePath($id).'/block');
}
/**
* @param int $id
*
* @return mixed
*/
public function unblock(int $id)
{
return $this->post('users/'.self::encodePath($id).'/unblock');
}
/**
* @param int $id
*
* @return mixed
*/
public function activate(int $id)
{
return $this->post('users/'.self::encodePath($id).'/activate');
}
/**
* @param int $id
*
* @return mixed
*/
public function deactivate(int $id)
{
return $this->post('users/'.self::encodePath($id).'/deactivate');
}
/**
* @return mixed
*/
public function me()
{
return $this->get('user');
}
/**
* @return mixed
*/
public function keys()
{
return $this->get('user/keys');
}
/**
* @param int $id
*
* @return mixed
*/
public function key(int $id)
{
return $this->get('user/keys/'.self::encodePath($id));
}
/**
* @param string $title
* @param string $key
*
* @return mixed
*/
public function createKey(string $title, string $key)
{
return $this->post('user/keys', [
'title' => $title,
'key' => $key,
]);
}
/**
* @param int $id
*
* @return mixed
*/
public function removeKey(int $id)
{
return $this->delete('user/keys/'.self::encodePath($id));
}
/**
* @param int $user_id
*
* @return mixed
*/
public function userKeys(int $user_id)
{
return $this->get('users/'.self::encodePath($user_id).'/keys');
}
/**
* @param int $user_id
* @param int $key_id
*
* @return mixed
*/
public function userKey(int $user_id, int $key_id)
{
return $this->get('users/'.self::encodePath($user_id).'/keys/'.self::encodePath($key_id));
}
/**
* @param int $user_id
* @param string $title
* @param string $key
*
* @return mixed
*/
public function createKeyForUser(int $user_id, string $title, string $key)
{
return $this->post('users/'.self::encodePath($user_id).'/keys', [
'title' => $title,
'key' => $key,
]);
}
/**
* @param int $user_id
* @param int $key_id
*
* @return mixed
*/
public function removeUserKey(int $user_id, int $key_id)
{
return $this->delete('users/'.self::encodePath($user_id).'/keys/'.self::encodePath($key_id));
}
/**
* @return mixed
*/
public function emails()
{
return $this->get('user/emails');
}
/**
* @param int $id
*
* @return mixed
*/
public function email(int $id)
{
return $this->get('user/emails/'.self::encodePath($id));
}
/**
* @param int $user_id
*
* @return mixed
*/
public function userEmails(int $user_id)
{
return $this->get('users/'.self::encodePath($user_id).'/emails');
}
/**
* @param int $user_id
* @param string $email
* @param bool $skip_confirmation
*
* @return mixed
*/
public function createEmailForUser(int $user_id, string $email, bool $skip_confirmation = false)
{
return $this->post('users/'.self::encodePath($user_id).'/emails', [
'email' => $email,
'skip_confirmation' => $skip_confirmation,
]);
}
/**
* @param int $user_id
* @param int $email_id
*
* @return mixed
*/
public function removeUserEmail(int $user_id, int $email_id)
{
return $this->delete('users/'.self::encodePath($user_id).'/emails/'.self::encodePath($email_id));
}
/**
* @param int $user_id
* @param array $params
*
* @return mixed
*/
public function userImpersonationTokens(int $user_id, array $params = [])
{
$resolver = $this->createOptionsResolver();
$resolver->setDefined('state')
->setAllowedValues('state', ['all', 'active', 'inactive'])
;
return $this->get('users/'.self::encodePath($user_id).'/impersonation_tokens', $resolver->resolve($params));
}
/**
* @param int $user_id
* @param int $impersonation_token_id
*
* @return mixed
*/
public function userImpersonationToken(int $user_id, int $impersonation_token_id)
{
return $this->get('users/'.self::encodePath($user_id).'/impersonation_tokens/'.self::encodePath($impersonation_token_id));
}
/**
* @param int $user_id
* @param string $name
* @param array $scopes
* @param string|null $expires_at
*
* @return mixed
*/
public function createImpersonationToken(int $user_id, string $name, array $scopes, ?string $expires_at = null)
{
return $this->post('users/'.self::encodePath($user_id).'/impersonation_tokens', [
'name' => $name,
'scopes' => $scopes,
'expires_at' => $expires_at,
]);
}
/**
* @param int $user_id
* @param int $impersonation_token_id
*
* @return mixed
*/
public function removeImpersonationToken(int $user_id, int $impersonation_token_id)
{
return $this->delete('users/'.self::encodePath($user_id).'/impersonation_tokens/'.self::encodePath($impersonation_token_id));
}
/**
* @param int $user_id
* @param array $parameters {
*
* @var string $action include only events of a particular action type
* @var string $target_type include only events of a particular target type
* @var \DateTimeInterface $before include only events created before a particular date
* @var \DateTimeInterface $after include only events created after a particular date
* @var string $sort Sort events in asc or desc order by created_at (default is desc)
* }
*
* @return mixed
*/
public function events(int $user_id, array $parameters = [])
{
$resolver = $this->createOptionsResolver();
$datetimeNormalizer = function (Options $resolver, \DateTimeInterface $value): string {
return $value->format('Y-m-d');
};
$resolver->setDefined('action')
->setAllowedValues('action', ['created', 'updated', 'closed', 'reopened', 'pushed', 'commented', 'merged', 'joined', 'left', 'destroyed', 'expired'])
;
$resolver->setDefined('target_type')
->setAllowedValues('target_type', ['issue', 'milestone', 'merge_request', 'note', 'project', 'snippet', 'user'])
;
$resolver->setDefined('before')
->setAllowedTypes('before', \DateTimeInterface::class)
->setNormalizer('before', $datetimeNormalizer);
$resolver->setDefined('after')
->setAllowedTypes('after', \DateTimeInterface::class)
->setNormalizer('after', $datetimeNormalizer)
;
$resolver->setDefined('sort')
->setAllowedValues('sort', ['asc', 'desc'])
;
return $this->get('users/'.self::encodePath($user_id).'/events', $resolver->resolve($parameters));
}
}