From 6fd638d6a45ab9ebd2537f3cbacbfe70fdb23927 Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Fri, 9 Jul 2021 09:16:22 -0700 Subject: [PATCH] Deal with pagination in list-sources --- mapbox_tilesets/scripts/cli.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/mapbox_tilesets/scripts/cli.py b/mapbox_tilesets/scripts/cli.py index 7d258f0..77de4af 100755 --- a/mapbox_tilesets/scripts/cli.py +++ b/mapbox_tilesets/scripts/cli.py @@ -5,6 +5,7 @@ import click import cligj import base64 +import re from requests_toolbelt import MultipartEncoder, MultipartEncoderMonitor import mapbox_tilesets @@ -708,12 +709,19 @@ def list_sources(username, token=None): url = "{0}/tilesets/v1/sources/{1}?access_token={2}".format( mapbox_api, username, mapbox_token ) - r = s.get(url) - if r.status_code == 200: - for source in r.json(): - click.echo(source["id"]) - else: - raise errors.TilesetsError(r.text) + pattern = re.compile("<(http[^>]*)>") + while url is not None: + r = s.get(url) + url = None + if 'Link' in r.headers: + matched = pattern.match(r.headers['Link']) + if matched: + url = matched[1] + "&access_token=" + mapbox_token + if r.status_code == 200: + for source in r.json(): + click.echo(source["id"]) + else: + raise errors.TilesetsError(r.text) def validate_stream(features):