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();