X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/380b40be6a008c627083c81a1eb684a78c64aa93..64b837f87103a59efb6d4dac2b8dfa3c7c40c09a:/sdk/perl/lib/Arvados/Request.pm diff --git a/sdk/perl/lib/Arvados/Request.pm b/sdk/perl/lib/Arvados/Request.pm index 4902b75c37..4523f7d6b3 100644 --- a/sdk/perl/lib/Arvados/Request.pm +++ b/sdk/perl/lib/Arvados/Request.pm @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + package Arvados::Request; use Data::Dumper; use LWP::UserAgent; @@ -18,7 +22,7 @@ sub _init { my $self = shift; $self->{'ua'} = new LWP::UserAgent(@_); - $self->{'ua'}->agent ("libarvados-perl/".$Warehouse::VERSION); + $self->{'ua'}->agent ("libarvados-perl/".$Arvados::VERSION); $self; } @@ -32,13 +36,22 @@ sub process_request { my $self = shift; my %req; - $req{$self->{'method'}} = $self->{'uri'}; + my %content; + my $method = $self->{'method'}; + if ($method eq 'GET' || $method eq 'HEAD') { + $content{'_method'} = $method; + $method = 'POST'; + } + $req{$method} = $self->{'uri'}; $self->{'req'} = new HTTP::Request (%req); $self->{'req'}->header('Authorization' => ('OAuth2 ' . $self->{'authToken'})) if $self->{'authToken'}; - my %content; + $self->{'req'}->header('Accept' => 'application/json'); + + # allow_nonref lets us encode JSON::true and JSON::false, see #12078 + my $json = JSON->new->allow_nonref; my ($p, $v); while (($p, $v) = each %{$self->{'queryParams'}}) { - $content{$p} = (ref($v) eq "") ? $v : JSON::encode_json($v); + $content{$p} = (ref($v) eq "") ? $v : $json->encode($v); } my $content; while (($p, $v) = each %content) {