+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
package Arvados::Request;
use Data::Dumper;
use LWP::UserAgent;
$self->{'req'} = new HTTP::Request (%req);
$self->{'req'}->header('Authorization' => ('OAuth2 ' . $self->{'authToken'})) if $self->{'authToken'};
$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) {
$content .= '&' unless $content eq '';
- $content .= lean_uri_escape($p);
+ $content .= uri_escape($p);
$content .= '=';
- $content .= lean_uri_escape($v);
+ $content .= uri_escape($v);
}
$self->{'req'}->content_type("application/x-www-form-urlencoded; charset='utf8'");
$self->{'req'}->content(Encode::encode('utf8', $content));
""
}
-# lean_uri_escape consumes about half as much memory
-# as URI::Escape::uri_escape.
-sub lean_uri_escape {
- my ($text) = @_;
- $text =~ s/([^A-Za-z0-9\-\._~])/$URI::Escape::escapes{$&}/ge;
- return $text;
-}
-
1;