Try to handle pagination - WIP
This commit is contained in:
parent
5a6c0ad398
commit
a74b144a90
|
@ -76,9 +76,9 @@ sub check_options {
|
||||||
|
|
||||||
$self->{option_results}->{url_path} = "/repos/" . $self->{option_results}->{owner} . "/" . $self->{option_results}->{repository} . "/issues";
|
$self->{option_results}->{url_path} = "/repos/" . $self->{option_results}->{owner} . "/" . $self->{option_results}->{repository} . "/issues";
|
||||||
if (defined($self->{option_results}->{label}) && $self->{option_results}->{label} ne '') {
|
if (defined($self->{option_results}->{label}) && $self->{option_results}->{label} ne '') {
|
||||||
$self->{option_results}->{get_param} = ['state=open', 'labels=' . $self->{option_results}->{label}, 'per_page=1000'];
|
$self->{option_results}->{get_param} = ['state=open', 'labels=' . $self->{option_results}->{label}, 'per_page=100'];
|
||||||
} else {
|
} else {
|
||||||
$self->{option_results}->{get_param} = ['state=open', 'per_page=1000'];
|
$self->{option_results}->{get_param} = ['state=open', 'per_page=100'];
|
||||||
}
|
}
|
||||||
$self->{http}->set_options(%{$self->{option_results}});
|
$self->{http}->set_options(%{$self->{option_results}});
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,29 @@ sub check_options {
|
||||||
sub run {
|
sub run {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
my $jsoncontent = $self->{http}->request();
|
my $pagination = 1;
|
||||||
|
|
||||||
|
my $nb_issues = 0;
|
||||||
|
my $header;
|
||||||
|
my $attemps = 3;
|
||||||
|
my $next_url = "";
|
||||||
|
|
||||||
|
while ($pagination && $attemps > 0) {
|
||||||
|
$attemps -= 1;
|
||||||
|
|
||||||
|
my $jsoncontent;
|
||||||
|
if ($next_url eq "") {
|
||||||
|
print 'Next url null.\n';
|
||||||
|
$jsoncontent = $self->{http}->request();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print 'New next url: ' . $next_url . '\n';
|
||||||
|
#$next_url = "/repositories/9074774/issues?per_page=100&state=open&page=3";
|
||||||
|
$self->{option_results}->{url_path} = $next_url;
|
||||||
|
$self->{http}->set_options(%{$self->{option_results}});
|
||||||
|
$jsoncontent = $self->{http}->request(url_path => $next_url, get_param => $self->{option_results}->{get_param});
|
||||||
|
#$jsoncontent = $self->{http}->request(url_path => $next_url);
|
||||||
|
}
|
||||||
|
|
||||||
my $json = JSON->new;
|
my $json = JSON->new;
|
||||||
my $webcontent;
|
my $webcontent;
|
||||||
|
@ -100,7 +122,25 @@ sub run {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Number of issues is array length
|
# Number of issues is array length
|
||||||
my $nb_issues = @{$webcontent};
|
$nb_issues += @{$webcontent};
|
||||||
|
|
||||||
|
$header = $self->{http}->get_header();
|
||||||
|
#use Data::Dumper;
|
||||||
|
#print Dumper($header);
|
||||||
|
if (defined($header->header('link'))) {
|
||||||
|
print "Link found\n";
|
||||||
|
if ($header->header('link') =~ /<https:\/\/api.github.com(\/.*)>; rel="next"/) {
|
||||||
|
print "Found regex\n";
|
||||||
|
$next_url = $1;
|
||||||
|
print $next_url . "\n";
|
||||||
|
} else {
|
||||||
|
$pagination = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pagination = 0;
|
||||||
|
print "No link found\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $exit = $self->{perfdata}->threshold_check(value => $nb_issues, threshold => [ { label => 'critical', exit_litteral => 'critical' }, , { label => 'warning', exit_litteral => 'warning' } ]);
|
my $exit = $self->{perfdata}->threshold_check(value => $nb_issues, threshold => [ { label => 'critical', exit_litteral => 'critical' }, , { label => 'warning', exit_litteral => 'warning' } ]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue