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