Bug 37526: Handle redirects in SUSHI requests
Test plan: 1) Apply test patch only. Run: prove t/db_dependent/Koha/BackgroundJob/ErmSushiHarvester.t 2) Verify tests fail. 3) Apply this patch. Run tests again. Verify they pass. PA amended: Added test plan Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
parent
f8657165f1
commit
a1f0fc04d1
|
|
@ -174,11 +174,8 @@ sub harvest_sushi {
|
|||
$self->{report_type} = $args->{report_type};
|
||||
$self->{begin_date} = $args->{begin_date};
|
||||
$self->{end_date} = $args->{end_date};
|
||||
my $url = $self->_build_url_query;
|
||||
my $request = HTTP::Request->new( 'GET' => $url );
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->agent( 'Koha/' . Koha::version() );
|
||||
my $response = $ua->simple_request($request);
|
||||
my $url = $self->_build_url_query;
|
||||
my $response = _handle_sushi_request($url);
|
||||
|
||||
my $result = decode_json( $response->decoded_content );
|
||||
|
||||
|
|
@ -278,10 +275,7 @@ sub test_connection {
|
|||
$url .= '&requestor_id=' . $self->requestor_id if $self->requestor_id;
|
||||
$url .= '&api_key=' . $self->api_key if $self->api_key;
|
||||
|
||||
my $request = HTTP::Request->new( 'GET' => $url );
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->agent( 'Koha/' . Koha::version() );
|
||||
my $response = $ua->simple_request($request);
|
||||
my $response = _handle_sushi_request($url);
|
||||
|
||||
if ( $response->{_rc} >= 400 ) {
|
||||
my $message = $response->{_msg};
|
||||
|
|
@ -525,6 +519,30 @@ sub _counter_file_size_too_large {
|
|||
return 0;
|
||||
}
|
||||
|
||||
=head3 _handle_sushi_response
|
||||
|
||||
Creates and sends the request based on a provided url
|
||||
Also handles any redirects
|
||||
|
||||
=cut
|
||||
|
||||
sub _handle_sushi_request {
|
||||
my ($url) = @_;
|
||||
|
||||
my $request = HTTP::Request->new( 'GET' => $url );
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->agent( 'Koha/' . Koha::version() );
|
||||
my $response = $ua->simple_request($request);
|
||||
|
||||
if ( $response->is_redirect ) {
|
||||
my $redirect_url = $response->header('Location');
|
||||
$redirect_url = URI->new_abs( $redirect_url, $url );
|
||||
$response = $ua->get($redirect_url);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
=head3 _type
|
||||
|
||||
=cut
|
||||
|
|
|
|||
Loading…
Reference in New Issue