37b3bb1e0947b7ded663b992b1cded3c0ac784fb hiram Tue Apr 9 15:26:25 2019 -0700 adding trackLeavesOnly refs #18869 diff --git src/hg/hubApi/tests/jsonConsumer.pl src/hg/hubApi/tests/jsonConsumer.pl index 5c51eec..d77ec7c 100755 --- src/hg/hubApi/tests/jsonConsumer.pl +++ src/hg/hubApi/tests/jsonConsumer.pl @@ -1,41 +1,45 @@ #!/usr/bin/env perl use strict; use warnings; use HTTP::Tiny; use Time::HiRes; use JSON; use Getopt::Long; my $http = HTTP::Tiny->new(); -my $server = 'https://api-test.gi.ucsc.edu'; +# my $server = 'https://api-test.gi.ucsc.edu'; +my $server = 'https://hgwdev-api.gi.ucsc.edu'; +# my $server = 'https://hgwbeta.soe.ucsc.edu/cgi-bin/hubApi'; my $global_headers = { 'Content-Type' => 'application/json' }; my $last_request_time = Time::HiRes::time(); my $request_count = 0; ############################################################################## # command line options my $endpoint = ""; my $hubUrl = ""; my $genome = ""; my $db = ""; my $track = ""; my $chrom = ""; my $start = ""; my $end = ""; my $test0 = 0; +my $debug = 0; +my $trackLeavesOnly = 0; my $maxItemsOutput = ""; ############################################################################## sub usage() { printf STDERR "usage: ./jsonConsumer.pl [arguments]\n"; printf STDERR "arguments: -test0 - perform test of /list/publicHubs and /list/ucscGenomes endpoints -hubUrl=<URL> - use the URL to access the track or assembly hub -db=<dbName> - use one of the UCSC databases for data access -track=<trackName> - specify a single track in a hub or database -chrom=<chromName> - restrict the operation to a single chromosome -start=<coordinate> - restrict the operation to a range, use both start and end -end=<coordinate> - restrict the operation to a range, use both start and end -maxItemsOutput=<N> - limit output to this number of items. Default 1,000 maximum allowed 1,000,000 @@ -85,30 +89,31 @@ $request_count = 0; } $endpoint =~ s#^/##; my $url = "$server/$endpoint"; 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; } + if ($debug) { $url .= ";debug=1"; } 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 $retry = $response->{headers}->{'retry-after'}; Time::HiRes::sleep($retry); # After sleeping see that we re-request return performRestAction($endpoint, $parameters, $headers); } else { my ($status, $reason) = ($response->{status}, $response->{reason}); die "Failed for $endpoint! Status code: ${status}. Reason: ${reason}\n"; } @@ -207,30 +212,33 @@ my $json = JSON->new; my $jsonReturn = {}; if ($endpoint eq "/list/hubGenomes") { if (length($hubUrl) > 0) { my %parameters; $parameters{"hubUrl"} = "$hubUrl"; $jsonReturn = performJsonAction($endpoint, \%parameters); printf "%s", $json->pretty->encode( $jsonReturn ); } else { printf STDERR "ERROR: need to specify a hubUrl for endpoint '%s'\n", $endpoint; exit 255; } } elsif ($endpoint eq "/list/tracks") { my $failing = 0; my %parameters; + if ($trackLeavesOnly) { + $parameters{"trackLeavesOnly"} = "1"; + } if (length($db) > 0) { $parameters{"db"} = "$db"; } elsif (length($hubUrl) < 1) { printf STDERR "ERROR: need to specify a hubUrl for endpoint '%s'\n", $endpoint; ++$failing; } else { $parameters{"hubUrl"} = "$hubUrl"; if (length($genome) < 1) { printf STDERR "ERROR: need to specify a genome for endpoint '%s'\n", $endpoint; ++$failing; } else { $parameters{"genome"} = "$genome"; } } if ($failing) { exit 255; } @@ -398,29 +406,31 @@ ############################################################################# ### main() ############################################################################# my $argc = scalar(@ARGV); GetOptions ("hubUrl=s" => \$hubUrl, "endpoint=s" => \$endpoint, "genome=s" => \$genome, "db=s" => \$db, "track=s" => \$track, "chrom=s" => \$chrom, "start=s" => \$start, "end=s" => \$end, "test0" => \$test0, + "debug" => \$debug, + "trackLeavesOnly" => \$trackLeavesOnly, "maxItemsOutput=s" => \$maxItemsOutput) or die "Error in command line arguments\n"; if ($test0) { test0; exit 0; } if ($argc > 0) { processEndPoint(); exit 0; } usage();