def tilejson(tileset, token=None, indent=None, secure=False): """View the TileJSON of a particular tileset. Can take a comma-separated list of tilesets for a composited TileJSON. tilesets tilejson <tileset_id>,<tileset_id> """ mapbox_api = utils._get_api() mapbox_token = utils._get_token(token) s = utils._get_session() # validate tilesets by splitting comma-delimted string # and rejoining it for t in tileset.split(","): if not utils.validate_tileset_id(t): raise errors.TilesetNameError(t) url = "{0}/v4/{1}.json?access_token={2}".format(mapbox_api, tileset, mapbox_token) if secure: url = url + "&secure" r = s.get(url) if r.status_code == 200: click.echo(json.dumps(r.json(), indent=indent)) else: raise errors.TilesetsError(r.text)
def create( tileset, recipe, name=None, description=None, privacy=None, token=None, indent=None ): """Create a new tileset with a recipe. $ tilesets create <tileset_id> <tileset_id> is in the form of username.handle - for example "mapbox.neat-tileset". The handle may only include "-" or "_" special characters. """ mapbox_api = _get_api() mapbox_token = _get_token(token) url = "{0}/tilesets/v1/{1}?access_token={2}".format( mapbox_api, tileset, mapbox_token ) body = {} body["name"] = name or "" body["description"] = description or "" if privacy: body["private"] = True if privacy == "private" else False if not utils.validate_tileset_id(tileset): raise errors.TilesetNameError if recipe: with open(recipe) as json_recipe: body["recipe"] = json.load(json_recipe) r = requests.post(url, json=body) click.echo(json.dumps(r.json(), indent=indent))
def create( tileset, recipe, name=None, description=None, privacy=None, attribution=None, token=None, indent=None, ): """Create a new tileset with a recipe. $ tilesets create <tileset_id> <tileset_id> is in the form of username.handle - for example "mapbox.neat-tileset". The handle may only include "-" or "_" special characters and must be 32 characters or fewer. """ mapbox_api = utils._get_api() mapbox_token = utils._get_token(token) s = utils._get_session() url = "{0}/tilesets/v1/{1}?access_token={2}".format( mapbox_api, tileset, mapbox_token ) body = {} body["name"] = name or "" body["description"] = description or "" if privacy: body["private"] = True if privacy == "private" else False if not utils.validate_tileset_id(tileset): raise errors.TilesetNameError(tileset) if recipe: with open(recipe) as json_recipe: body["recipe"] = json.load(json_recipe) if attribution: try: body["attribution"] = json.loads(attribution) except: click.echo("Unable to parse attribution JSON") click.exit(1) r = s.post(url, json=body) click.echo(json.dumps(r.json(), indent=indent))
def test_validate_tileset_id_toolong(): tileset = "hellooooooooooooooooooooooooooooooo.hiiiiiiiuuuuuuuuuuuuuuuuuuuuuu" assert not validate_tileset_id(tileset)
def test_validate_tileset_id_badfmt(): tileset = "iama.test.ok" assert not validate_tileset_id(tileset)
def test_validate_tileset_id(): tileset = "iama.test" assert validate_tileset_id(tileset)