Loading GitLab/Groups.pm +50 −18 Original line number Original line Diff line number Diff line Loading @@ -8,20 +8,37 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = v8.12.1; our $VERSION = v8.17.2; my $requests = { my $requests = { groups => { groups => { method => "GET", method => "GET", path => "/groups", path => "/groups", query => [ qw(search) ], query => [qw( skip_groups all_available search order_by sort statistics owned )], paginated => 1, paginated => 1, }, }, group_get_projects => { group_get_projects => { method => "GET", method => "GET", path => "/groups/<gid>/projects", path => "/groups/<gid>/projects", optional => [ qw(archived visibility order_by sort search ci_enabled_first) ], optional => [qw( archived visibility order_by sort search simple owned starred )], paginated => 1, paginated => 1, }, }, Loading @@ -33,8 +50,17 @@ my $requests = { group_create => { group_create => { method => "POST", method => "POST", path => "/groups", path => "/groups", required => [ qw(name path) ], required => [qw( optional => [ qw(description visibility_level lfs_enabled request_access_enabled) ], name path )], optional => [qw( description visibility lfs_enabled request_access_enabled parent_id )], }, }, transfer_project_to_group => { transfer_project_to_group => { Loading @@ -45,7 +71,14 @@ my $requests = { group_update => { group_update => { method => "PUT", method => "PUT", path => "/groups/<gid>", path => "/groups/<gid>", optional => [ qw(name path description visibility_level lfs_enabled request_access_enabled) ], optional => [qw( name path description visibility lfs_enabled request_access_enabled )], }, }, group_delete => { group_delete => { Loading Loading @@ -75,8 +108,7 @@ response formats. =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 DESCRIPTION =head1 DESCRIPTION Loading @@ -91,22 +123,22 @@ Please refer to the official documentation for the full list. =over =over =item groups() =item L<groups()|https://docs.gitlab.com/ce/api/groups.html#list-groups> $groups = $gitlab->groups( [:search] ); $groups = $gitlab->groups( [:search] [:all_available] [:owned] ); Returns a list of groups. Returns a list of groups. An optional parameter C<search> can be used to filter the list by substring match on C<name>. An optional parameter C<search> can be used to filter the list by substring match on C<name>. =item group_details() =item L<group_details()|https://docs.gitlab.com/ce/api/groups.html#details-of-a-group> $details = $gitlab->group_details( :gid ); $details = $gitlab->group_details( :gid ); Returns details about a group with the given C<gid>. Returns details about a group with the given C<gid>. =item group_create() =item L<group_create()|https://docs.gitlab.com/ce/api/groups.html#new-group> $group = $gitlab->group_create( :name, :path, [:description], [:visibility_level] ); $group = $gitlab->group_create( :name, :path, [:description], [:visibility] ); Creates a new group. Required arguments are Creates a new group. Required arguments are Loading @@ -116,16 +148,16 @@ Creates a new group. Required arguments are In addition, the following I<optional> arguments can be specified: In addition, the following I<optional> arguments can be specified: description group's description description group's description visibility_level see GitLab::API for possible values visibility see GitLab::API for possible values =item group_update() =item L<group_update()|https://docs.gitlab.com/ce/api/groups.html#update-group> $group = $gitlab->group_update( :gid ); $group = $gitlab->group_update( :gid ); Updates the grup with the given C<gid>. Updates the grup with the given C<gid>. Takes same arguments as C<group_create>, except they are all optional. Takes same arguments as C<group_create>, except they are all optional. =item group_delete() =item L<group_delete()|https://docs.gitlab.com/ce/api/groups.html#remove-group> $gitlab->group_delete( :gid ); $gitlab->group_delete( :gid ); Loading @@ -141,13 +173,13 @@ This section was moved to a separate module L<GitLab::Members>. =over =over =item group_get_projects() =item L<group_get_projects()|https://docs.gitlab.com/ce/api/groups.html#list-a-group-39-s-projects> $projects = $gitlab->group_get_projects( :gid ); $projects = $gitlab->group_get_projects( :gid ); Returns a list of projects owned by the group with the given C<gid>. Returns a list of projects owned by the group with the given C<gid>. =item transfer_project_to_group() =item L<transfer_project_to_group()|https://docs.gitlab.com/ce/api/groups.html#transfer-project-to-group> $gitlab->transfer_project_to_group( :gid, :projid ); $gitlab->transfer_project_to_group( :gid, :projid ); Loading GitLab/Members.pm +44 −21 Original line number Original line Diff line number Diff line Loading @@ -8,13 +8,16 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = v8.12.1; our $VERSION = v8.17.2; my $requests = { my $requests = { group_members => { group_members => { method => "GET", method => "GET", path => "/groups/<gid>/members", path => "/groups/<gid>/members", paginated => 1, paginated => 1, optional => [qw( query )], }, }, group_get_member => { group_get_member => { Loading @@ -25,15 +28,24 @@ my $requests = { group_add_member => { group_add_member => { method => "POST", method => "POST", path => "/groups/<gid>/members", path => "/groups/<gid>/members", required => [ qw!user_id access_level! ], required => [qw( optional => [ qw!expires_at! ], user_id access_level )], optional => [qw( expires_at )], }, }, group_update_member => { group_update_member => { method => "PUT", method => "PUT", path => "/groups/<gid>/members/<user_id>", path => "/groups/<gid>/members/<user_id>", required => [ qw!access_level! ], required => [qw( optional => [ qw!expires_at! ], access_level )], optional => [qw( expires_at )], }, }, group_delete_member => { group_delete_member => { Loading @@ -45,6 +57,9 @@ my $requests = { method => "GET", method => "GET", path => "/projects/<id>/members", path => "/projects/<id>/members", paginated => 1, paginated => 1, optional => [qw( query )], }, }, project_get_member => { project_get_member => { Loading @@ -55,15 +70,24 @@ my $requests = { project_add_member => { project_add_member => { method => "POST", method => "POST", path => "/projects/<id>/members", path => "/projects/<id>/members", required => [ qw!user_id access_level! ], required => [qw( optional => [ qw!expires_at! ], user_id access_level )], optional => [qw( expires_at )], }, }, project_update_member => { project_update_member => { method => "PUT", method => "PUT", path => "/projects/<id>/members/<user_id>", path => "/projects/<id>/members/<user_id>", required => [ qw!access_level! ], required => [qw( optional => [ qw!expires_at! ], access_level )], optional => [qw( expires_at )], }, }, project_delete_member => { project_delete_member => { Loading Loading @@ -93,8 +117,7 @@ response formats. =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 DESCRIPTION =head1 DESCRIPTION Loading @@ -109,13 +132,13 @@ Please refer to the official documentation for the full list. =over =over =item group_members() =item L<group_members()|https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project> $members = $gitlab->group_members( :gid ); $members = $gitlab->group_members( :gid ); Returns a list of members in the group with the specified C<gid>. Returns a list of members in the group with the specified C<gid>. =item group_get_member() =item L<group_get_member()|https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project> $gitlab->group_get_member( :gid, :user_id ) $gitlab->group_get_member( :gid, :user_id ) Loading @@ -128,7 +151,7 @@ Can also be used to check whether the given user is a member of the group if use # not a member # not a member } } =item group_add_member() =item L<group_add_member()|https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project> $gitlab->group_add_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->group_add_member( :gid, :user_id, :access_level, [:expires_at] ); Loading @@ -136,14 +159,14 @@ Adds a user with C<user_id> to the group with the given C<gid> with the specifie See L<GitLab::API> module for possible access level values. See L<GitLab::API> module for possible access level values. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. =item group_update_member() =item L<group_update_member()|https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project> $gitlab->group_update_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->group_update_member( :gid, :user_id, :access_level, [:expires_at] ); For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. It can also remove the C<expires_at> property if set to C<undef>. It can also remove the C<expires_at> property if set to C<undef>. =item group_delete_member() =item L<group_delete_member()|https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project> $gitlab->group_delete_member( :gid, :user_id ); $gitlab->group_delete_member( :gid, :user_id ); Loading @@ -153,13 +176,13 @@ Removes the user with C<user_id> from the group with the specified C<gid>. =over =over =item project_members() =item L<project_members()|https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project> $members = $gitlab->project_members( :gid ); $members = $gitlab->project_members( :gid ); Returns a list of members in the project with the specified C<id>. Returns a list of members in the project with the specified C<id>. =item project_get_member() =item L<project_get_member()|https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project> $gitlab->project_get_member( :gid, :user_id ) $gitlab->project_get_member( :gid, :user_id ) Loading @@ -172,7 +195,7 @@ Can also be used to check whether the given user is a member of the project if u # not a member # not a member } } =item project_add_member() =item L<project_add_member()|https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project> $gitlab->project_add_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->project_add_member( :gid, :user_id, :access_level, [:expires_at] ); Loading @@ -180,14 +203,14 @@ Adds a user with C<user_id> to the project with the given C<id> with the specifi See L<GitLab::API> module for possible access level values. See L<GitLab::API> module for possible access level values. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. =item project_update_member() =item L<project_update_member()|https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project> $gitlab->project_update_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->project_update_member( :gid, :user_id, :access_level, [:expires_at] ); For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. It can also remove the C<expires_at> property if set to C<undef>. It can also remove the C<expires_at> property if set to C<undef>. =item group_delete_member() =item L<group_delete_member()|https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project> $gitlab->group_delete_member( :gid, :user_id ); $gitlab->group_delete_member( :gid, :user_id ); Loading GitLab/Namespaces.pm +5 −4 Original line number Original line Diff line number Diff line Loading @@ -8,13 +8,15 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = v8.12.1; our $VERSION = v8.17.2; my $requests = { my $requests = { namespaces => { namespaces => { method => "GET", method => "GET", path => "/namespaces", path => "/namespaces", query => [ qw(search) ], query => [qw( search )], paginated => 1, paginated => 1, } } }; }; Loading Loading @@ -51,8 +53,7 @@ See L<GitLab API -- Namespaces|http://doc.gitlab.com/ce/api/namespaces.html> for =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 DESCRIPTION =head1 DESCRIPTION Loading GitLab/Projects.pm +239 −122 File changed.Preview size limit exceeded, changes collapsed. Show changes GitLab/Users.pm +94 −32 Original line number Original line Diff line number Diff line Loading @@ -8,13 +8,18 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = 8.12.1; our $VERSION = 8.17.2; my $requests = { my $requests = { users => { users => { method => "GET", method => "GET", path => "/users", path => "/users", query => [ qw(username search) ], query => [qw( username search blocked active )], paginated => 1, paginated => 1, }, }, Loading @@ -26,18 +31,58 @@ my $requests = { user_create => { user_create => { method => "POST", method => "POST", path => "/users", path => "/users", required => [ qw(email password username name) ], required => [qw( optional => [ qw(skype linkedin twitter website_url projects_limit email extern_uid provider bio location admin confirm can_create_group external) ], username name )], optional => [qw( password reset_password skype linkedin twitter website_url organization projects_limit extern_uid provider bio location admin can_create_group confirm external )], }, }, user_update => { user_update => { method => "PUT", method => "PUT", path => "/users/<uid>", path => "/users/<uid>", # update can cause Conflict, but API always returns 404 # update can cause Conflict, but API always returns 404 ret => { 404 => "Not found or Conflict" }, ret => { optional => [ qw(email password name username skype linkedin twitter 404 => "Not found or Conflict" website_url projects_limit extern_uid provider bio location admin can_create_group external) ], }, optional => [qw( email username name password skype linkedin twitter website_url organization projects_limit extern_uid provider bio location admin can_create_group confirm external )], }, }, user_delete => { user_delete => { Loading Loading @@ -143,6 +188,12 @@ my $requests = { method => "PUT", method => "PUT", path => "/users/<uid>/unblock", path => "/users/<uid>/unblock", }, }, user_events => { method => "GET", path => "/users/<uid>/events", paginated => 1, }, }; }; sub import { sub import { Loading @@ -166,8 +217,7 @@ response formats. =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 SYNOPSIS =head1 SYNOPSIS Loading Loading @@ -209,7 +259,7 @@ Please refer to the official documentation for the full list. =over =over =item users() =item L<users()|https://docs.gitlab.com/ce/api/users.html#list-users> $users = $gitlab->users( [:username], [:search] ); $users = $gitlab->users( [:username], [:search] ); Loading @@ -222,13 +272,13 @@ to filter out the results: Note that the returned value is still an array even when C<< users(username => $username) >> Note that the returned value is still an array even when C<< users(username => $username) >> always returns at most one result. always returns at most one result. =item user_by_id() =item L<user_by_id()|https://docs.gitlab.com/ce/api/users.html#single-user> $user = $gitlab->user_by_id( :uid ); $user = $gitlab->user_by_id( :uid ); Returns a user with the given C<uid>. Returns a user with the given C<uid>. =item user_create() =item L<user_create()|https://docs.gitlab.com/ce/api/users.html#user-creation> $user = $gitlab->user_create( :email, :password, :username, :name ); $user = $gitlab->user_create( :email, :password, :username, :name ); Loading @@ -247,7 +297,7 @@ the full list. Most interesting arguments are: external create an external account (bool) external create an external account (bool) projects_limit maximum number of projects the user can own projects_limit maximum number of projects the user can own =item user_update() =item L<user_update()|https://docs.gitlab.com/ce/api/users.html#user-modification> $user = $gitlab->user_update( :uid ); $user = $gitlab->user_update( :uid ); Loading @@ -260,7 +310,7 @@ Also, from documentation: Note, at the moment this method does only return a 404 error, even in cases where Note, at the moment this method does only return a 404 error, even in cases where a 409 (Conflict) would be more appropriate, e.g. when renaming the email address to some existing one. a 409 (Conflict) would be more appropriate, e.g. when renaming the email address to some existing one. =item user_delete() =item L<user_delete()|https://docs.gitlab.com/ce/api/users.html#user-deletion> $gitlab->user_delete( :uid ); $gitlab->user_delete( :uid ); Loading @@ -273,7 +323,7 @@ Note that (from the GitLab API documentation). (from the GitLab API documentation). =item user() =item L<user()|https://docs.gitlab.com/ce/api/users.html#user> $user = $gitlab->user(); $user = $gitlab->user(); Loading @@ -288,25 +338,25 @@ Behaves the same as the L<GitLab::API/whoami> method. =over =over =item self_ssh_keys() =item L<self_ssh_keys()|https://docs.gitlab.com/ce/api/users.html#list-ssh-keys> $keys = $gitlab->self_ssh_keys(); $keys = $gitlab->self_ssh_keys(); Returns a list of SSH keys for the user that makes the request. Returns a list of SSH keys for the user that makes the request. =item self_get_ssh_key() =item L<self_get_ssh_key()|https://docs.gitlab.com/ce/api/users.html#list-ssh-keys-for-user> $key = $gitlab->self_get_ssh_key( :keyid ); $key = $gitlab->self_get_ssh_key( :keyid ); For the user that makes the request, the function returns the SSH key with the given C<keyid>. For the user that makes the request, the function returns the SSH key with the given C<keyid>. =item user_get_ssh_keys() =item L<user_get_ssh_keys()|https://docs.gitlab.com/ce/api/users.html#single-ssh-key> $keys = $gitlab->user_get_ssh_keys( :uid ); $keys = $gitlab->user_get_ssh_keys( :uid ); Returns a list of SSH keys for the user with the given C<uid>. Returns a list of SSH keys for the user with the given C<uid>. =item self_add_ssh_key() =item L<self_add_ssh_key()|https://docs.gitlab.com/ce/api/users.html#add-ssh-key> $key = $gitlab->self_add_ssh_key( :title, :key ); $key = $gitlab->self_add_ssh_key( :title, :key ); Loading @@ -315,19 +365,19 @@ Adds a new key for the user that makes the request. Required arguments are title the title of the key title the title of the key key public SSH key key public SSH key =item user_add_ssh_key() =item L<user_add_ssh_key()|https://docs.gitlab.com/ce/api/users.html#add-ssh-key-for-user> $key = $gitlab->user_add_ssh_key( :uid, :title, :key ); $key = $gitlab->user_add_ssh_key( :uid, :title, :key ); Similar to C<self_add_ssh_key>, but targets the user with the given C<uid>. Similar to C<self_add_ssh_key>, but targets the user with the given C<uid>. =item self_delete_ssh_key() =item L<self_delete_ssh_key()|https://docs.gitlab.com/ce/api/users.html#delete-ssh-key-for-current-user> $gitlab->self_delete_ssh_key( :keyid ) $gitlab->self_delete_ssh_key( :keyid ) Removes the SSH key with the given C<keyid> for the user that makes the request. Removes the SSH key with the given C<keyid> for the user that makes the request. =item user_delete_ssh_key() =item L<user_delete_ssh_key()|https://docs.gitlab.com/ce/api/users.html#delete-ssh-key-for-given-user> $gitlab->user_delete_ssh_key( :uid, :keyid ); $gitlab->user_delete_ssh_key( :uid, :keyid ); Loading @@ -339,7 +389,7 @@ Removes the SSH key with the C<keyid> for the user with the given C<uid>. =over =over =item self_get_emails() =item L<self_get_emails()|https://docs.gitlab.com/ce/api/users.html#list-emails> $emails = $gitlab->self_get_emails(); $emails = $gitlab->self_get_emails(); Loading @@ -347,7 +397,7 @@ Returns a list of B<secondary> e-mails for the user that makes the request. Note that primary e-mail can be obtained from the result of C<whoami>. Note that primary e-mail can be obtained from the result of C<whoami>. =item user_get_emails() =item L<user_get_emails()|https://docs.gitlab.com/ce/api/users.html#list-emails-for-user> $emails = $gitlab->user_get_emails( :uid ); $emails = $gitlab->user_get_emails( :uid ); Loading @@ -355,33 +405,33 @@ Returns a list of B<secondary> e-mails for the user with the C<uid>. Note that primary e-mail can be obtained from the result of C<user_by_id>. Note that primary e-mail can be obtained from the result of C<user_by_id>. =item self_get_email() =item L<self_get_email()|https://docs.gitlab.com/ce/api/users.html#single-email> $email = $gitlab->self_get_email( :eid ); $email = $gitlab->self_get_email( :eid ); Returns the e-mail with the given C<eid> of the user that makes the request. Returns the e-mail with the given C<eid> of the user that makes the request. =item self_add_email() =item L<self_add_email()|https://docs.gitlab.com/ce/api/users.html#add-email> $email = $gitlab->self_add_email( :email ); $email = $gitlab->self_add_email( :email ); Adds a new C<email> for the user that makes the request. The e-mail must Adds a new C<email> for the user that makes the request. The e-mail must not exist in GitLab. not exist in GitLab. =item user_add_email() =item L<user_add_email()|https://docs.gitlab.com/ce/api/users.html#add-email-for-user> $email = $gitlab->user_add_email( :uid, :email ); $email = $gitlab->user_add_email( :uid, :email ); Adds a new C<email> for the user with the given C<uid>. The e-mail must Adds a new C<email> for the user with the given C<uid>. The e-mail must not exist in GitLab. not exist in GitLab. =item self_delete_email() =item L<self_delete_email()|https://docs.gitlab.com/ce/api/users.html#delete-email-for-current-user> $gitlab->self_delete_email( :eid ); $gitlab->self_delete_email( :eid ); Deletes the e-mail with C<eid> of the user that makes the request. Deletes the e-mail with C<eid> of the user that makes the request. =item user_delete_email() =item L<user_delete_email()|https://docs.gitlab.com/ce/api/users.html#delete-email-for-given-user> $gitlab->user_delete_email( :uid, :eid ); $gitlab->user_delete_email( :uid, :eid ); Loading @@ -393,13 +443,13 @@ Removes the e-mail with C<eid> of the user with the given C<uid>. =over =over =item user_block() =item L<user_block()|https://docs.gitlab.com/ce/api/users.html#block-user> $gitlab->user_block( :uid ); $gitlab->user_block( :uid ); Blocks the user with C<uid> in the GitLab. Blocks the user with C<uid> in the GitLab. =item user_unblock() =item L<user_unblock()|https://docs.gitlab.com/ce/api/users.html#unblock-user> $gitlab->user_unblock( :uid ); $gitlab->user_unblock( :uid ); Loading @@ -409,6 +459,18 @@ In that case the API would return C<403 Forbidden>. =back =back =head2 Miscellaneous =over =item L<user_events()|https://docs.gitlab.com/ce/api/users.html#get-user-contribution-events> $gitlab->user_events( :uid ); Get the contribution events for the specified user, sorted from newest to oldest. =back =head1 AUTHOR =head1 AUTHOR Roman Lacko <L<xlacko1@fi.muni.cz>> Roman Lacko <L<xlacko1@fi.muni.cz>> Loading Loading
GitLab/Groups.pm +50 −18 Original line number Original line Diff line number Diff line Loading @@ -8,20 +8,37 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = v8.12.1; our $VERSION = v8.17.2; my $requests = { my $requests = { groups => { groups => { method => "GET", method => "GET", path => "/groups", path => "/groups", query => [ qw(search) ], query => [qw( skip_groups all_available search order_by sort statistics owned )], paginated => 1, paginated => 1, }, }, group_get_projects => { group_get_projects => { method => "GET", method => "GET", path => "/groups/<gid>/projects", path => "/groups/<gid>/projects", optional => [ qw(archived visibility order_by sort search ci_enabled_first) ], optional => [qw( archived visibility order_by sort search simple owned starred )], paginated => 1, paginated => 1, }, }, Loading @@ -33,8 +50,17 @@ my $requests = { group_create => { group_create => { method => "POST", method => "POST", path => "/groups", path => "/groups", required => [ qw(name path) ], required => [qw( optional => [ qw(description visibility_level lfs_enabled request_access_enabled) ], name path )], optional => [qw( description visibility lfs_enabled request_access_enabled parent_id )], }, }, transfer_project_to_group => { transfer_project_to_group => { Loading @@ -45,7 +71,14 @@ my $requests = { group_update => { group_update => { method => "PUT", method => "PUT", path => "/groups/<gid>", path => "/groups/<gid>", optional => [ qw(name path description visibility_level lfs_enabled request_access_enabled) ], optional => [qw( name path description visibility lfs_enabled request_access_enabled )], }, }, group_delete => { group_delete => { Loading Loading @@ -75,8 +108,7 @@ response formats. =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 DESCRIPTION =head1 DESCRIPTION Loading @@ -91,22 +123,22 @@ Please refer to the official documentation for the full list. =over =over =item groups() =item L<groups()|https://docs.gitlab.com/ce/api/groups.html#list-groups> $groups = $gitlab->groups( [:search] ); $groups = $gitlab->groups( [:search] [:all_available] [:owned] ); Returns a list of groups. Returns a list of groups. An optional parameter C<search> can be used to filter the list by substring match on C<name>. An optional parameter C<search> can be used to filter the list by substring match on C<name>. =item group_details() =item L<group_details()|https://docs.gitlab.com/ce/api/groups.html#details-of-a-group> $details = $gitlab->group_details( :gid ); $details = $gitlab->group_details( :gid ); Returns details about a group with the given C<gid>. Returns details about a group with the given C<gid>. =item group_create() =item L<group_create()|https://docs.gitlab.com/ce/api/groups.html#new-group> $group = $gitlab->group_create( :name, :path, [:description], [:visibility_level] ); $group = $gitlab->group_create( :name, :path, [:description], [:visibility] ); Creates a new group. Required arguments are Creates a new group. Required arguments are Loading @@ -116,16 +148,16 @@ Creates a new group. Required arguments are In addition, the following I<optional> arguments can be specified: In addition, the following I<optional> arguments can be specified: description group's description description group's description visibility_level see GitLab::API for possible values visibility see GitLab::API for possible values =item group_update() =item L<group_update()|https://docs.gitlab.com/ce/api/groups.html#update-group> $group = $gitlab->group_update( :gid ); $group = $gitlab->group_update( :gid ); Updates the grup with the given C<gid>. Updates the grup with the given C<gid>. Takes same arguments as C<group_create>, except they are all optional. Takes same arguments as C<group_create>, except they are all optional. =item group_delete() =item L<group_delete()|https://docs.gitlab.com/ce/api/groups.html#remove-group> $gitlab->group_delete( :gid ); $gitlab->group_delete( :gid ); Loading @@ -141,13 +173,13 @@ This section was moved to a separate module L<GitLab::Members>. =over =over =item group_get_projects() =item L<group_get_projects()|https://docs.gitlab.com/ce/api/groups.html#list-a-group-39-s-projects> $projects = $gitlab->group_get_projects( :gid ); $projects = $gitlab->group_get_projects( :gid ); Returns a list of projects owned by the group with the given C<gid>. Returns a list of projects owned by the group with the given C<gid>. =item transfer_project_to_group() =item L<transfer_project_to_group()|https://docs.gitlab.com/ce/api/groups.html#transfer-project-to-group> $gitlab->transfer_project_to_group( :gid, :projid ); $gitlab->transfer_project_to_group( :gid, :projid ); Loading
GitLab/Members.pm +44 −21 Original line number Original line Diff line number Diff line Loading @@ -8,13 +8,16 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = v8.12.1; our $VERSION = v8.17.2; my $requests = { my $requests = { group_members => { group_members => { method => "GET", method => "GET", path => "/groups/<gid>/members", path => "/groups/<gid>/members", paginated => 1, paginated => 1, optional => [qw( query )], }, }, group_get_member => { group_get_member => { Loading @@ -25,15 +28,24 @@ my $requests = { group_add_member => { group_add_member => { method => "POST", method => "POST", path => "/groups/<gid>/members", path => "/groups/<gid>/members", required => [ qw!user_id access_level! ], required => [qw( optional => [ qw!expires_at! ], user_id access_level )], optional => [qw( expires_at )], }, }, group_update_member => { group_update_member => { method => "PUT", method => "PUT", path => "/groups/<gid>/members/<user_id>", path => "/groups/<gid>/members/<user_id>", required => [ qw!access_level! ], required => [qw( optional => [ qw!expires_at! ], access_level )], optional => [qw( expires_at )], }, }, group_delete_member => { group_delete_member => { Loading @@ -45,6 +57,9 @@ my $requests = { method => "GET", method => "GET", path => "/projects/<id>/members", path => "/projects/<id>/members", paginated => 1, paginated => 1, optional => [qw( query )], }, }, project_get_member => { project_get_member => { Loading @@ -55,15 +70,24 @@ my $requests = { project_add_member => { project_add_member => { method => "POST", method => "POST", path => "/projects/<id>/members", path => "/projects/<id>/members", required => [ qw!user_id access_level! ], required => [qw( optional => [ qw!expires_at! ], user_id access_level )], optional => [qw( expires_at )], }, }, project_update_member => { project_update_member => { method => "PUT", method => "PUT", path => "/projects/<id>/members/<user_id>", path => "/projects/<id>/members/<user_id>", required => [ qw!access_level! ], required => [qw( optional => [ qw!expires_at! ], access_level )], optional => [qw( expires_at )], }, }, project_delete_member => { project_delete_member => { Loading Loading @@ -93,8 +117,7 @@ response formats. =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 DESCRIPTION =head1 DESCRIPTION Loading @@ -109,13 +132,13 @@ Please refer to the official documentation for the full list. =over =over =item group_members() =item L<group_members()|https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project> $members = $gitlab->group_members( :gid ); $members = $gitlab->group_members( :gid ); Returns a list of members in the group with the specified C<gid>. Returns a list of members in the group with the specified C<gid>. =item group_get_member() =item L<group_get_member()|https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project> $gitlab->group_get_member( :gid, :user_id ) $gitlab->group_get_member( :gid, :user_id ) Loading @@ -128,7 +151,7 @@ Can also be used to check whether the given user is a member of the group if use # not a member # not a member } } =item group_add_member() =item L<group_add_member()|https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project> $gitlab->group_add_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->group_add_member( :gid, :user_id, :access_level, [:expires_at] ); Loading @@ -136,14 +159,14 @@ Adds a user with C<user_id> to the group with the given C<gid> with the specifie See L<GitLab::API> module for possible access level values. See L<GitLab::API> module for possible access level values. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. =item group_update_member() =item L<group_update_member()|https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project> $gitlab->group_update_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->group_update_member( :gid, :user_id, :access_level, [:expires_at] ); For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. It can also remove the C<expires_at> property if set to C<undef>. It can also remove the C<expires_at> property if set to C<undef>. =item group_delete_member() =item L<group_delete_member()|https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project> $gitlab->group_delete_member( :gid, :user_id ); $gitlab->group_delete_member( :gid, :user_id ); Loading @@ -153,13 +176,13 @@ Removes the user with C<user_id> from the group with the specified C<gid>. =over =over =item project_members() =item L<project_members()|https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project> $members = $gitlab->project_members( :gid ); $members = $gitlab->project_members( :gid ); Returns a list of members in the project with the specified C<id>. Returns a list of members in the project with the specified C<id>. =item project_get_member() =item L<project_get_member()|https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project> $gitlab->project_get_member( :gid, :user_id ) $gitlab->project_get_member( :gid, :user_id ) Loading @@ -172,7 +195,7 @@ Can also be used to check whether the given user is a member of the project if u # not a member # not a member } } =item project_add_member() =item L<project_add_member()|https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project> $gitlab->project_add_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->project_add_member( :gid, :user_id, :access_level, [:expires_at] ); Loading @@ -180,14 +203,14 @@ Adds a user with C<user_id> to the project with the given C<id> with the specifi See L<GitLab::API> module for possible access level values. See L<GitLab::API> module for possible access level values. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. The optional argument C<expires_at> expects format C<YYYY-MM-DD>. =item project_update_member() =item L<project_update_member()|https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project> $gitlab->project_update_member( :gid, :user_id, :access_level, [:expires_at] ); $gitlab->project_update_member( :gid, :user_id, :access_level, [:expires_at] ); For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. For user with the given C<user_id> the function changes his C<access_level> in the group with the specified C<gid>. It can also remove the C<expires_at> property if set to C<undef>. It can also remove the C<expires_at> property if set to C<undef>. =item group_delete_member() =item L<group_delete_member()|https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project> $gitlab->group_delete_member( :gid, :user_id ); $gitlab->group_delete_member( :gid, :user_id ); Loading
GitLab/Namespaces.pm +5 −4 Original line number Original line Diff line number Diff line Loading @@ -8,13 +8,15 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = v8.12.1; our $VERSION = v8.17.2; my $requests = { my $requests = { namespaces => { namespaces => { method => "GET", method => "GET", path => "/namespaces", path => "/namespaces", query => [ qw(search) ], query => [qw( search )], paginated => 1, paginated => 1, } } }; }; Loading Loading @@ -51,8 +53,7 @@ See L<GitLab API -- Namespaces|http://doc.gitlab.com/ce/api/namespaces.html> for =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 DESCRIPTION =head1 DESCRIPTION Loading
GitLab/Projects.pm +239 −122 File changed.Preview size limit exceeded, changes collapsed. Show changes
GitLab/Users.pm +94 −32 Original line number Original line Diff line number Diff line Loading @@ -8,13 +8,18 @@ use vars qw($VERSION); use GitLab::API; use GitLab::API; use Log::Any qw($log); use Log::Any qw($log); our $VERSION = 8.12.1; our $VERSION = 8.17.2; my $requests = { my $requests = { users => { users => { method => "GET", method => "GET", path => "/users", path => "/users", query => [ qw(username search) ], query => [qw( username search blocked active )], paginated => 1, paginated => 1, }, }, Loading @@ -26,18 +31,58 @@ my $requests = { user_create => { user_create => { method => "POST", method => "POST", path => "/users", path => "/users", required => [ qw(email password username name) ], required => [qw( optional => [ qw(skype linkedin twitter website_url projects_limit email extern_uid provider bio location admin confirm can_create_group external) ], username name )], optional => [qw( password reset_password skype linkedin twitter website_url organization projects_limit extern_uid provider bio location admin can_create_group confirm external )], }, }, user_update => { user_update => { method => "PUT", method => "PUT", path => "/users/<uid>", path => "/users/<uid>", # update can cause Conflict, but API always returns 404 # update can cause Conflict, but API always returns 404 ret => { 404 => "Not found or Conflict" }, ret => { optional => [ qw(email password name username skype linkedin twitter 404 => "Not found or Conflict" website_url projects_limit extern_uid provider bio location admin can_create_group external) ], }, optional => [qw( email username name password skype linkedin twitter website_url organization projects_limit extern_uid provider bio location admin can_create_group confirm external )], }, }, user_delete => { user_delete => { Loading Loading @@ -143,6 +188,12 @@ my $requests = { method => "PUT", method => "PUT", path => "/users/<uid>/unblock", path => "/users/<uid>/unblock", }, }, user_events => { method => "GET", path => "/users/<uid>/events", paginated => 1, }, }; }; sub import { sub import { Loading @@ -166,8 +217,7 @@ response formats. =head1 VERSION =head1 VERSION Implements API calls for GitLab CE C<v8.10.0>. Implements API calls for GitLab CE C<v8.17.2>. Checked 2016-09-29 for GitLab CE C<v8.12.1>. =head1 SYNOPSIS =head1 SYNOPSIS Loading Loading @@ -209,7 +259,7 @@ Please refer to the official documentation for the full list. =over =over =item users() =item L<users()|https://docs.gitlab.com/ce/api/users.html#list-users> $users = $gitlab->users( [:username], [:search] ); $users = $gitlab->users( [:username], [:search] ); Loading @@ -222,13 +272,13 @@ to filter out the results: Note that the returned value is still an array even when C<< users(username => $username) >> Note that the returned value is still an array even when C<< users(username => $username) >> always returns at most one result. always returns at most one result. =item user_by_id() =item L<user_by_id()|https://docs.gitlab.com/ce/api/users.html#single-user> $user = $gitlab->user_by_id( :uid ); $user = $gitlab->user_by_id( :uid ); Returns a user with the given C<uid>. Returns a user with the given C<uid>. =item user_create() =item L<user_create()|https://docs.gitlab.com/ce/api/users.html#user-creation> $user = $gitlab->user_create( :email, :password, :username, :name ); $user = $gitlab->user_create( :email, :password, :username, :name ); Loading @@ -247,7 +297,7 @@ the full list. Most interesting arguments are: external create an external account (bool) external create an external account (bool) projects_limit maximum number of projects the user can own projects_limit maximum number of projects the user can own =item user_update() =item L<user_update()|https://docs.gitlab.com/ce/api/users.html#user-modification> $user = $gitlab->user_update( :uid ); $user = $gitlab->user_update( :uid ); Loading @@ -260,7 +310,7 @@ Also, from documentation: Note, at the moment this method does only return a 404 error, even in cases where Note, at the moment this method does only return a 404 error, even in cases where a 409 (Conflict) would be more appropriate, e.g. when renaming the email address to some existing one. a 409 (Conflict) would be more appropriate, e.g. when renaming the email address to some existing one. =item user_delete() =item L<user_delete()|https://docs.gitlab.com/ce/api/users.html#user-deletion> $gitlab->user_delete( :uid ); $gitlab->user_delete( :uid ); Loading @@ -273,7 +323,7 @@ Note that (from the GitLab API documentation). (from the GitLab API documentation). =item user() =item L<user()|https://docs.gitlab.com/ce/api/users.html#user> $user = $gitlab->user(); $user = $gitlab->user(); Loading @@ -288,25 +338,25 @@ Behaves the same as the L<GitLab::API/whoami> method. =over =over =item self_ssh_keys() =item L<self_ssh_keys()|https://docs.gitlab.com/ce/api/users.html#list-ssh-keys> $keys = $gitlab->self_ssh_keys(); $keys = $gitlab->self_ssh_keys(); Returns a list of SSH keys for the user that makes the request. Returns a list of SSH keys for the user that makes the request. =item self_get_ssh_key() =item L<self_get_ssh_key()|https://docs.gitlab.com/ce/api/users.html#list-ssh-keys-for-user> $key = $gitlab->self_get_ssh_key( :keyid ); $key = $gitlab->self_get_ssh_key( :keyid ); For the user that makes the request, the function returns the SSH key with the given C<keyid>. For the user that makes the request, the function returns the SSH key with the given C<keyid>. =item user_get_ssh_keys() =item L<user_get_ssh_keys()|https://docs.gitlab.com/ce/api/users.html#single-ssh-key> $keys = $gitlab->user_get_ssh_keys( :uid ); $keys = $gitlab->user_get_ssh_keys( :uid ); Returns a list of SSH keys for the user with the given C<uid>. Returns a list of SSH keys for the user with the given C<uid>. =item self_add_ssh_key() =item L<self_add_ssh_key()|https://docs.gitlab.com/ce/api/users.html#add-ssh-key> $key = $gitlab->self_add_ssh_key( :title, :key ); $key = $gitlab->self_add_ssh_key( :title, :key ); Loading @@ -315,19 +365,19 @@ Adds a new key for the user that makes the request. Required arguments are title the title of the key title the title of the key key public SSH key key public SSH key =item user_add_ssh_key() =item L<user_add_ssh_key()|https://docs.gitlab.com/ce/api/users.html#add-ssh-key-for-user> $key = $gitlab->user_add_ssh_key( :uid, :title, :key ); $key = $gitlab->user_add_ssh_key( :uid, :title, :key ); Similar to C<self_add_ssh_key>, but targets the user with the given C<uid>. Similar to C<self_add_ssh_key>, but targets the user with the given C<uid>. =item self_delete_ssh_key() =item L<self_delete_ssh_key()|https://docs.gitlab.com/ce/api/users.html#delete-ssh-key-for-current-user> $gitlab->self_delete_ssh_key( :keyid ) $gitlab->self_delete_ssh_key( :keyid ) Removes the SSH key with the given C<keyid> for the user that makes the request. Removes the SSH key with the given C<keyid> for the user that makes the request. =item user_delete_ssh_key() =item L<user_delete_ssh_key()|https://docs.gitlab.com/ce/api/users.html#delete-ssh-key-for-given-user> $gitlab->user_delete_ssh_key( :uid, :keyid ); $gitlab->user_delete_ssh_key( :uid, :keyid ); Loading @@ -339,7 +389,7 @@ Removes the SSH key with the C<keyid> for the user with the given C<uid>. =over =over =item self_get_emails() =item L<self_get_emails()|https://docs.gitlab.com/ce/api/users.html#list-emails> $emails = $gitlab->self_get_emails(); $emails = $gitlab->self_get_emails(); Loading @@ -347,7 +397,7 @@ Returns a list of B<secondary> e-mails for the user that makes the request. Note that primary e-mail can be obtained from the result of C<whoami>. Note that primary e-mail can be obtained from the result of C<whoami>. =item user_get_emails() =item L<user_get_emails()|https://docs.gitlab.com/ce/api/users.html#list-emails-for-user> $emails = $gitlab->user_get_emails( :uid ); $emails = $gitlab->user_get_emails( :uid ); Loading @@ -355,33 +405,33 @@ Returns a list of B<secondary> e-mails for the user with the C<uid>. Note that primary e-mail can be obtained from the result of C<user_by_id>. Note that primary e-mail can be obtained from the result of C<user_by_id>. =item self_get_email() =item L<self_get_email()|https://docs.gitlab.com/ce/api/users.html#single-email> $email = $gitlab->self_get_email( :eid ); $email = $gitlab->self_get_email( :eid ); Returns the e-mail with the given C<eid> of the user that makes the request. Returns the e-mail with the given C<eid> of the user that makes the request. =item self_add_email() =item L<self_add_email()|https://docs.gitlab.com/ce/api/users.html#add-email> $email = $gitlab->self_add_email( :email ); $email = $gitlab->self_add_email( :email ); Adds a new C<email> for the user that makes the request. The e-mail must Adds a new C<email> for the user that makes the request. The e-mail must not exist in GitLab. not exist in GitLab. =item user_add_email() =item L<user_add_email()|https://docs.gitlab.com/ce/api/users.html#add-email-for-user> $email = $gitlab->user_add_email( :uid, :email ); $email = $gitlab->user_add_email( :uid, :email ); Adds a new C<email> for the user with the given C<uid>. The e-mail must Adds a new C<email> for the user with the given C<uid>. The e-mail must not exist in GitLab. not exist in GitLab. =item self_delete_email() =item L<self_delete_email()|https://docs.gitlab.com/ce/api/users.html#delete-email-for-current-user> $gitlab->self_delete_email( :eid ); $gitlab->self_delete_email( :eid ); Deletes the e-mail with C<eid> of the user that makes the request. Deletes the e-mail with C<eid> of the user that makes the request. =item user_delete_email() =item L<user_delete_email()|https://docs.gitlab.com/ce/api/users.html#delete-email-for-given-user> $gitlab->user_delete_email( :uid, :eid ); $gitlab->user_delete_email( :uid, :eid ); Loading @@ -393,13 +443,13 @@ Removes the e-mail with C<eid> of the user with the given C<uid>. =over =over =item user_block() =item L<user_block()|https://docs.gitlab.com/ce/api/users.html#block-user> $gitlab->user_block( :uid ); $gitlab->user_block( :uid ); Blocks the user with C<uid> in the GitLab. Blocks the user with C<uid> in the GitLab. =item user_unblock() =item L<user_unblock()|https://docs.gitlab.com/ce/api/users.html#unblock-user> $gitlab->user_unblock( :uid ); $gitlab->user_unblock( :uid ); Loading @@ -409,6 +459,18 @@ In that case the API would return C<403 Forbidden>. =back =back =head2 Miscellaneous =over =item L<user_events()|https://docs.gitlab.com/ce/api/users.html#get-user-contribution-events> $gitlab->user_events( :uid ); Get the contribution events for the specified user, sorted from newest to oldest. =back =head1 AUTHOR =head1 AUTHOR Roman Lacko <L<xlacko1@fi.muni.cz>> Roman Lacko <L<xlacko1@fi.muni.cz>> Loading