Isogeo Python SDK
latest

Quickstart

  • Installation
  • Authenticate to the API

Cookbook

  • Usage

Package

  • isogeo_pysdk
    • isogeo_pysdk package
      • Subpackages
        • isogeo_pysdk.api package
        • isogeo_pysdk.enums package
        • isogeo_pysdk.models package
      • Submodules
Isogeo Python SDK
  • »
  • isogeo_pysdk »
  • isogeo_pysdk package »
  • isogeo_pysdk.api package »
  • isogeo_pysdk.api.routes_link module
  • Edit on GitHub

isogeo_pysdk.api.routes_link module

Isogeo API v1 - API Routes to manage metadata links.

See: http://help.isogeo.com/api/complete/index.html

class isogeo_pysdk.api.routes_link.ApiLink(api_client=None)

Bases: object

Routes as methods of Isogeo API used to manipulate metadata links (CGUs).

clean_kind_action_liability(link_actions, link_kind)

Link available actions depend on link kind. Relationships between kinds and actions are described in the /link-kinds route. This is a helper checking the liability between kind/actions/type and cleaning if needed. Useful before creating or updating a link.

Parameters
  • link_actions (list) – link actions

  • link_kind (str) – link kind

Return type

tuple

Example

# invalid action will be removed
print(isogeo.metadata.links.clean_kind_action_liability(
    link_actions=("download", "stream"),
    link_kind="url"
    )
)
>>> ('download',)
create(metadata, link, clean_actions=True)

Add a new link to a metadata (= resource).

Parameters
  • metadata (Metadata) – metadata (resource) to edit

  • link (Link) – link object to create

  • clean_actions (bool) – if True, clean link actions depending on link kind

Returns

the created link or a tuple with the request’s response error code

Return type

Link or tuple

Example

# retrieve metadata
md = isogeo.metadata.get(METADATA_UUID)
# create the link locally
new_link = Link(
    type="url",
    restriction="patent",
    description="Do not use for commercial purpose.",
    )
# add it to the metadata
isogeo.metadata.links.create(md, new_link)

# to create a link which is a pointer to another link, add the link attribute:
new_link = Link(
    actions=["other"],
    title="Associated link",
    kind="url",
    type="link",
    link=Link(_id=LINK_UUID)
    )
delete(link, metadata=None)

Delete a link from a metadata.

Parameters
  • link (Link) – Link model object to delete

  • metadata (Metadata) – parent metadata (resource) containing the link. Optional if the link contains the ‘parent_resource’ attribute.

Return type

Response

download_hosted(link, encode_clean=1)

Download hosted resource.

Parameters
  • link (Link) – link object

  • encode_clean (bool) – option to ensure a clean filename and avoid OS errors

Returns

tuple(stream, filename, human readable size)

Return type

tuple

Example:

# get links from a metadata
md_links = isogeo.metadata.links.listing(Metadata(_id=METADATA_UUID))
# filter on hosted links
hosted_links = [
    link for link in md_links
    if link.get("type") == "hosted"
    ]
# get the stream, the filename and the size (in human readable format)
dl_stream = isogeo.metadata.links.download_hosted(Link(**hosted_links[0]))
# download the file and store it locally
with open("./" + dl_stream[1], "wb") as fd:
    for block in dl_stream[0].iter_content(1024):
        fd.write(block)
get(metadata_id, link_id)

Get details about a specific link.

Parameters
  • metadata_id (str) – metadata UUID

  • link_id (str) – link UUID

Return type

Link

Example

# get a metadata
md = isogeo.metadata.get(METADATA_UUID)
# list its links
md_links = isogeo.metadata.links.listing(md)
# get the first link
link = isogeo.metadata.links.get(
    metadata_id=md._id,
    link_id=md_links[0].get("_id")
    )
kinds_actions(caching=1)

Get the relation between kinds and action for links.

Parameters

caching (bool) – cache the response into the main API client instance. Defaults to True.

Returns

list of dictionaries per link kinds

Return type

list

Example

import pprint
pprint.pprint(isogeo.metadata.links.kinds_actions())

>>> [
        {
            'actions':
            [
                'download',
                'view',
                'other'
            ],
            'kind': 'url',
            'name': 'Lien'
        },
        {
            'actions': ['download', 'view', 'other'],
            'kind': 'wfs',
            'name': 'Service WFS'
        },
        {
            'actions': ['view', 'other'],
            'kind': 'wms',
            'name': 'Service WMS'
        },
        {
            'actions': ['view', 'other'],
            'kind': 'wmts',
            'name': 'Service WMTS'
        },
        {
            'actions': ['download', 'view', 'other'],
            'kind': 'esriFeatureService',
            'name': 'Service ESRI Feature'
        },
        {
            'actions': ['view', 'other'],
            'kind': 'esriMapService',
            'name': 'Service ESRI Map'
        },
        {
            'actions': ['view', 'other'],
            'kind': 'esriTileService',
            'name': 'Service ESRI Tile'
        },
        {
            'actions': ['download', 'other'],
            'kind': 'data',
            'name': 'Donnée brute'
        }
    ]
listing(metadata)

Get links of a metadata.

Parameters

metadata (Metadata) – metadata (resource)

Return type

list

update(link, metadata=None)

Update a link.

Parameters
  • link (Link) – Link model object to update

  • metadata (Metadata) – parent metadata (resource) containing the link. Optional if the link contains the ‘parent_resource’ attribute.

Return type

Link

upload_hosted(metadata, link, file_to_upload)

Add a new link to a metadata uploading a file to hosted data. See: https://requests.readthedocs.io/en/latest/user/quickstart/#post-a-multipart-encoded-file

Parameters
  • metadata (Metadata) – metadata (resource) to edit

  • link (Link) – link object to create

  • file_to_upload (Path) – file path to upload

Returns

the new Link if successed or the tuple with the request error code

Return type

Link or tuple

Example

from pathlib import Path

# define metadata
md = isogeo.metadata.get(METADATA_UUID)

# localize the file on the OS
my_file = Path("./upload/documentation.zip")

# create the link locally
lk = Link(
    title=my_file.name
    )

# add it to the metadata
send = isogeo.metadata.links.upload_hosted(
    metadata=md,
    link=lk,
    file_to_upload=my_file.resolve()
    )
Previous Next

© Copyright 2016 - 2022, Isogeo. Revision c187d7bb.

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions
latest
stable
v2.21.2
docs
Downloads
pdf
html
epub
On Read the Docs
Project Home
Builds