Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Roman Lacko
gitlab_api
Commits
c27f079a
Commit
c27f079a
authored
Sep 15, 2017
by
Roman Lacko
Browse files
add Host, Version and Secure options to replace URL
parent
4d4c8559
Changes
1
Show whitespace changes
Inline
Side-by-side
GitLab/API.pm
View file @
c27f079a
...
@@ -40,7 +40,15 @@ sub croak(@) { $log->fatal(@_); Carp::croak @_; }
...
@@ -40,7 +40,15 @@ sub croak(@) { $log->fatal(@_); Carp::croak @_; }
sub
new
{
sub
new
{
my
(
$class
,
%args
)
=
@_
;
my
(
$class
,
%args
)
=
@_
;
croak
"
URL parameter is required
"
unless
defined
$args
{
URL
};
croak
"
either URL or Host parameter is required, but not both
"
unless
(
defined
$args
{
URL
}
xor
defined
$args
{
Host
});
if
(
defined
$args
{
Host
})
{
my
$s
=
(
$args
{
Secure
}
//
1
)
?
"
https
"
:
"
http
";
my
$v
=
$args
{
Version
}
//
4
;
$args
{
URL
}
=
"
$s
://
$args
{Host}/api/v
$v
";
}
$log
->
debug
("
initializing GitLab::API for
\"
$args
{URL}
\"
");
$log
->
debug
("
initializing GitLab::API for
\"
$args
{URL}
\"
");
my
$self
=
{
my
$self
=
{
...
@@ -422,7 +430,7 @@ See L<GitLab API|http://doc.gitlab.com/ce/api/> for details.
...
@@ -422,7 +430,7 @@ See L<GitLab API|http://doc.gitlab.com/ce/api/> for details.
my $gitlab = GitLab::API->new(
my $gitlab = GitLab::API->new(
AuthToken => $token,
AuthToken => $token,
URL
=> $
url
,
Host
=> $
host
,
);
);
# simple result
# simple result
...
@@ -452,24 +460,81 @@ See L<GitLab API|http://doc.gitlab.com/ce/api/> for details.
...
@@ -452,24 +460,81 @@ See L<GitLab API|http://doc.gitlab.com/ce/api/> for details.
Creates a new instance of L<GitLab::API>. Takes a hash of arguments:
Creates a new instance of L<GitLab::API>. Takes a hash of arguments:
Login user login
=over
Email user e-mail, required only if Login is not provided,
Password user password
=item * Host specification
AuthToken authentication token
URL url to connect to, usually https://gitlab.domain/api/v3
Either C<URL> or C<Host> is required, but not both.
DieOnError see die_on_error() method
Cache enable caching
=over
=item C<URL>
Fully specifies the API to connect to. Usually in format
L<http(s)://gitlab.domain.com/api/v4>. Must not be combined with C<Host>.
=item C<Host>
Hostname of GitLab. Must not be combined with C<URL>.
=item C<Version>
Version of GitLab API to connect to. The default is C<4> and you should
not change this unless you really need other versions.
This options is ignored if C<URL> is used.
=item C<Secure>
Whether or not use HTTPS. The default is C<1>.
This option is ignored if C<URL> is used.
=back
=item * Login information
There are three ways to log in to GitLab, using a combination of parameters:
C<URL> is always required.
=over
The method also requires I<either> C<AuthToken> I<or> ((C<Login> or C<Email>) and C<Password>).
That is, the only meaningful combinations are
=item C<AuthToken>
Use GitLab Personal Token to access API. Does not need to use the Session
API, hence avoids one step when setting up L<GitLab::API>.
=item C<Login>, C<Password>
This combination will use Session API to obtain token. Then it will
continue as C<AuthToken> was specified.
=item C<Email>, C<Password>
An alternative to C<Login> and C<Password>.
=back
=item * Miscellaneous
GitLab::API->new(URL => $URL, AuthToken => $TOKEN);
=over
GitLab::API->new(URL => $URL, Login => $LOGIN, Password => $PASSWD);
GitLab::API->new(URL => $URL, Email => $EMAIL, Password => $PASSWD);
=item C<DieOnError>
API will call L<Carp/croak> if any request fails. This general option
can be overriden when needed, by setting C<< -immortal => 1 >> to request.
=item C<Cache>
API will use L<GitLab::API::Cache> to store data along with their C<ETags>
to speed up repetitive requests. This may, however, consume more memory.
You may manually clear the cache by calling
Caching is available since version L<9.0.0> and allows to cache responses
$gitlab->cache->flush;
based on C<ETag> headers. See L<GitLab::API::Cache> for more details.
The ETags are fully supported in GitLab since version 9.0.0. If L<GitLab::API>
detects that GitLab is of earlier version, a warning will be logged.
=back
=back
=item sudo()
=item sudo()
...
@@ -480,9 +545,9 @@ Similar to L<sudo(8)|sudo>, changes identity to the user with the C<$username>.
...
@@ -480,9 +545,9 @@ Similar to L<sudo(8)|sudo>, changes identity to the user with the C<$username>.
If the C<$username> argument is not defined, changes the identity back to the original user.
If the C<$username> argument is not defined, changes the identity back to the original user.
I<This feature is available only to the admins.>
I<This feature is available only to the admins.>
You can test for that with the L</
whoa
mi> method this
way
:
You can test for that with the L</
is_ad
mi
n
> method
like
this:
if ($gitlab->
whoami()->{
is_admin
}
) {
if ($gitlab->is_admin) {
# Booyah!
# Booyah!
}
}
...
@@ -507,7 +572,7 @@ The result is not affected by L</sudo()>.
...
@@ -507,7 +572,7 @@ The result is not affected by L</sudo()>.
my $value = $gitlab->die_on_error();
my $value = $gitlab->die_on_error();
$gitlab->die_on_error($value);
$gitlab->die_on_error($value);
When called without an argument, returns the current value of the setting
s
.
When called without an argument, returns the current value of the setting.
Otherwise sets the first argument as the value.
Otherwise sets the first argument as the value.
If enabled, any call that returns an unsuccessful (!= 2**) HTTP code will call C<Carp/croak> with the status code.
If enabled, any call that returns an unsuccessful (!= 2**) HTTP code will call C<Carp/croak> with the status code.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment