9512d9e92adf96a6e857ebad9385420a131b41a0 hiram Fri Jun 14 12:19:11 2024 -0700 correctly form URL when no standard arguments refs #23589 diff --git src/hg/hubApi/tests/jsonConsumer.pl src/hg/hubApi/tests/jsonConsumer.pl index b3c8169..8ad4545 100755 --- src/hg/hubApi/tests/jsonConsumer.pl +++ src/hg/hubApi/tests/jsonConsumer.pl @@ -119,44 +119,49 @@ $headers->{'Content-Type'} = 'application/json' unless exists $headers->{'Content-Type'}; if($requestCount == 15) { # check every 15 my $currentTime = Time::HiRes::time(); my $diff = $currentTime - $lastRequestTime; # if less than a second then sleep for the remainder of the second if($diff < 1) { Time::HiRes::sleep(1-$diff); } # reset $lastRequestTime = Time::HiRes::time(); $requestCount = 0; } $endpoint =~ s#^/##; my $url = "$server/$endpoint"; + my $argSeparator = ";"; if(%{$parameters}) { my @params; foreach my $key (keys %{$parameters}) { my $value = $parameters->{$key}; push(@params, "$key=$value"); } my $param_string = join(';', @params); $url.= '?'.$param_string; + } else { + if ($debug || $measureTiming || $jsonOutputArrays || length($maxItemsOutput) ) { + $argSeparator = "?"; + } } - if ($debug) { $url .= ";debug=1"; } - if ($measureTiming) { $url .= ";measureTiming=1"; } - if ($jsonOutputArrays) { $url .= ";jsonOutputArrays=1"; } - if (length($maxItemsOutput)) { $url .= ";maxItemsOutput=$maxItemsOutput"; } + if ($debug) { $url .= "${argSeparator}debug=1"; } + if ($measureTiming) { $url .= "${argSeparator}measureTiming=1"; } + if ($jsonOutputArrays) { $url .= "${argSeparator}jsonOutputArrays=1"; } + if (length($maxItemsOutput)) { $url .= "${argSeparator}maxItemsOutput=$maxItemsOutput"; } printf STDERR "### '%s'\n", $url; my $response = $http->get($url, {headers => $headers}); my $status = $response->{status}; if(!$response->{success}) { # Quickly check for rate limit exceeded & Retry-After (lowercase due to our client) if($status == 429 && exists $response->{headers}->{'retry-after'}) { my ($status, $reason) = ($response->{status}, $response->{reason}); my $retry = $response->{headers}->{'retry-after'}; printf STDERR "Failed for $endpoint! Status code: ${status}. Reason: ${reason}, retry-after: $retry seconds\n"; # hashOutput($response->{headers}); Time::HiRes::sleep($retry); # After sleeping see that we re-request return performRestAction($endpoint, $parameters, $headers); } else {