Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Roman Lacko
gitlab_api
Commits
8dddf469
Commit
8dddf469
authored
Oct 25, 2016
by
Roman Lacko
Committed by
Fakultni administrativa
Oct 25, 2016
Browse files
API: small fixes in Iterator
parent
aec1e6fa
Changes
2
Hide whitespace changes
Inline
Side-by-side
GitLab/API.pm
View file @
8dddf469
...
...
@@ -242,7 +242,8 @@ sub exec_request {
$log
->
debug
("
using iterator to obtain the result
");
my
$iterator
=
GitLab::API::
Iterator
->
new
(
$self
,
$uri
,
per_page
=>
$rtargs
->
{
-
per_page
}
//
$defaults
{
per_page
});
per_page
=>
$rtargs
->
{
-
per_page
}
//
$defaults
{
per_page
},
template
=>
$tmpl
);
return
$rtargs
->
{
-
iterator
}
?
$iterator
:
$iterator
->
all
;
}
...
...
@@ -325,7 +326,7 @@ sub AUTOLOAD {
}
# The following code registers "whoami" method needed by the constructor.
IN
IT
{
BEG
IN
{
__PACKAGE__
->
register
({
name
=>
"
whoami
",
method
=>
"
GET
",
...
...
GitLab/API/Iterator.pm
View file @
8dddf469
...
...
@@ -23,19 +23,21 @@ sub new {
api
=>
$api
,
url
=>
$url
,
per_page
=>
$extra
{
per_page
}
//
50
,
tmpl
=>
$extra
{
template
}
//
{
name
=>
"
unknown
"
},
};
bless
$self
,
$class
;
$self
->
reset
;
$log
->
debug
("
created iterator for
$url
, per_page=
$self
->{per_page}
");
$log
->
debug
("
created iterator for
"
.
$self
->
{
tmpl
}
->
{
name
}
.
"
(
$url
)
, per_page=
$self
->{per_page}
");
return
$self
;
}
sub
api
{
return
shift
->
{
api
};
}
sub
url
{
return
shift
->
{
url
};
}
sub
count
{
return
shift
->
{
count
};
}
sub
pages
{
return
shift
->
{
pages_read
};
}
sub
name
{
return
shift
->
{
tmpl
}
->
{
name
};
}
sub
pages
{
return
shift
->
{
pages_read
};
}
#===============================================================================
# Public methods
...
...
@@ -68,7 +70,7 @@ sub reset {
sub
rewind
{
my
(
$self
)
=
@_
;
$log
->
debug
("
rewinding
");
$log
->
debug
("
(
"
.
$self
->
name
.
"
)
rewinding
");
$self
->
{
ix
}
=
-
1
;
}
...
...
@@ -105,14 +107,14 @@ sub next_block {
my
(
$self
)
=
@_
;
if
(
!
$self
->
{
good
})
{
carp
"
Called next_block on an invalid iterator
"
;
carp
"
Called next_block on an invalid iterator
for
"
.
$self
->
name
;
return
0
;
}
$log
->
debug
("
requesting a new block, currently has
$self
->{pages_read} /
"
.
(
$self
->
{
pages_total
}
//
"
unknown
"));
$log
->
debug
("
(
"
.
$self
->
name
.
"
)
requesting a new block, currently has
$self
->{pages_read} /
"
.
(
$self
->
{
pages_total
}
//
"
unknown
"));
if
(
defined
$self
->
{
pages_total
}
&&
$self
->
{
pages_total
}
==
$self
->
{
pages_read
})
{
$log
->
debug
("
all pages were read, nothing to do
");
$log
->
debug
("
(
"
.
$self
->
name
.
"
)
all pages were read, nothing to do
");
$self
->
{
finished
}
=
1
;
return
0
;
}
...
...
@@ -121,7 +123,7 @@ sub next_block {
$xurl
->
query_param
(
page
=>
$self
->
{
pages_read
}
+
1
);
$xurl
->
query_param
(
per_page
=>
$self
->
{
per_page
});
$log
->
debug
("
GET
"
.
$xurl
);
$log
->
debug
("
(
"
.
$self
->
name
.
"
)
GET
"
.
$xurl
);
my
(
$response
,
$data
)
=
$self
->
api
->
clean_data
(
$self
->
api
->
http
->
get
(
$xurl
));
if
(
$log
->
is_trace
)
{
...
...
@@ -130,12 +132,13 @@ sub next_block {
$log
->
trace
("
--------------------
"
.
("
-
"
x
25
));
}
$log
->
debug
("
status:
"
.
$response
->
status_line
);
$log
->
debug
("
(
"
.
$self
->
name
.
"
)
status:
"
.
$response
->
status_line
);
if
(
!
$response
->
is_success
)
{
$self
->
{
good
}
=
0
;
croak
"
Cannot obtain next block:
",
$response
->
status_line
if
$self
->
api
->
die_on_error
;
croak
"
Cannot obtain next block for (
"
.
$self
->
name
.
"
):
"
.
$response
->
status_line
if
$self
->
api
->
die_on_error
;
return
0
;
}
...
...
@@ -145,11 +148,12 @@ sub next_block {
# if there was no X-Total-Pages, the response is not paginated, blame the user
if
(
!
defined
$self
->
{
pages_total
})
{
carp
"
Iterating over non-paginated request
";
# some requests are not paginated if additional parameters are provided
# carp "Iterating over non-paginated request for " . $self->name;
$self
->
{
pages_total
}
=
1
;
}
croak
"
Response did not contain an array
"
croak
"
Response
for
"
.
$self
->
name
.
"
did not contain an array
"
unless
ref
$data
eq
"
ARRAY
";
push
@
{
$self
->
{
data
}},
@$data
;
...
...
@@ -160,7 +164,7 @@ sub next_block {
++
$self
->
{
pages_read
};
$self
->
{
finished
}
=
$self
->
{
pages_read
}
==
$self
->
{
pages_total
};
$log
->
debug
("
block read successful
");
$log
->
debug
("
(
"
.
$self
->
name
.
"
)
block read successful
");
return
1
;
}
...
...
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