TT#53575 Fix next page method

* use URI in order to remove doubling of query parameters
	  because they were seen as array refs

Change-Id: I73e25860381d4dcba0197b40d603a6d4933b6b84
changes/61/28261/7
Flaviu Mates 6 years ago
parent dccac95b3a
commit 625692f35d

@ -8,6 +8,7 @@ use IO::Socket::SSL;
use LWP::UserAgent;
use Readonly;
use Encode;
use URI;
my $config;
@ -104,18 +105,16 @@ sub request {
}
sub next_page {
my ($self, $uri) = @_;
(my $params = $uri) =~ s/^[^?]+\?//;
$params =~ s/[&?]rows(=\d+)?//;
$params =~ s/[&?]page(=\d+)?//;
my ( $self, $uri ) = @_;
my $uri_obj = URI->new( $uri );
unless ($self->{_ua}) {
($self->{_ua},$self->{_urlbase}) = $self->_create_ua($uri);
$self->{_collection_url} = sprintf "https://%s%s%spage=1&rows=%d", $self->{_urlbase},
$uri =~ m#^/# ? $uri : "/".$uri,
$uri =~ m#\?# ? '&' : '?',
$self->{_rows};
my %params = $uri_obj->query_form;
$params{page} //= 1;
$params{rows} //= $self->{_rows};
$uri_obj->query_form( \%params );
$self->{_collection_url} = sprintf "https://%s%s", $self->{_urlbase}, $uri_obj->as_string;
}
return unless $self->{_collection_url};
@ -124,14 +123,19 @@ sub next_page {
my $res = NGCP::API::Client::Result->new($self->{_ua}->request($req));
my $collection_uri_obj = URI->new( $self->{_collection_url} );
undef $self->{_collection_url};
my $data = $res->as_hash();
if ($data && ref($data) eq 'HASH') {
$uri = $data->{_links}->{next}->{href};
return $res unless $uri && $uri =~ /page/;
$uri .= '&'.$params if $params && $uri !~ /\Q$params\E/;
$self->{_collection_url} = $self->_get_url($self->{_urlbase},$uri) if $uri;
$uri_obj = URI->new( $data->{_links}->{next}->{href} );
return $res unless $uri_obj;
my %params = $uri_obj->query_form;
return $res unless grep { $_ eq 'page' } keys %params;
%params = ($collection_uri_obj->query_form, $uri_obj->query_form);
$uri_obj->query_form( \%params );
$self->{_collection_url} = $self->_get_url($self->{_urlbase},$uri_obj->as_string) if $uri_obj;
}
return $res;

Loading…
Cancel
Save