isogeo_pysdk.utils module¶
Complementary set of utils to use with Isogeo API.
-
class
isogeo_pysdk.utils.
IsogeoUtils
(proxies={})¶ Bases:
object
Complementary set of utilitary methods and functions to make it easier using Isogeo API.
-
API_URLS
= {'prod': 'api', 'qa': 'api.qa'}¶
-
APP_URLS
= {'prod': 'https://app.isogeo.com', 'qa': 'https://qa-isogeo-app.azurewebsites.net'}¶
-
CSW_URLS
= {'prod': 'https://services.api.isogeo.com/', 'qa': 'http://services.api.qa.isogeo.com'}¶
-
MNG_URLS
= {'prod': 'https://manage.isogeo.com', 'qa': 'https://qa-isogeo-manage.azurewebsites.net'}¶
-
OC_URLS
= {'prod': 'https://open.isogeo.com', 'qa': 'https://qa-isogeo-open.azurewebsites.net'}¶
-
WEBAPPS
= {'csw_getcap': {'args': ('share_id', 'share_token'), 'url': 'https://services.api.isogeo.com/ows/s/{share_id}/{share_token}?service=CSW&version=2.0.2&request=GetCapabilities'}, 'csw_getrec': {'args': ('md_uuid_urn', 'share_id', 'share_token'), 'url': 'https://services.api.isogeo.com/ows/s/{share_id}/{share_token}?service=CSW&version=2.0.2&request=GetRecordById&id={md_uuid_urn}&elementsetname=full&outputSchema=http://www.isotc211.org/2005/gmd'}, 'csw_getrecords': {'args': ('share_id', 'share_token'), 'url': 'https://services.api.isogeo.com/ows/s/{share_id}/{share_token}?service=CSW&version=2.0.2&request=GetRecords&ResultType=results&ElementSetName=brief&maxRecords=20&OutputFormat=application/xml&OutputSchema=http://www.opengis.net/cat/csw/2.0.2&namespace=xmlns(csw=http://www.opengis.net/cat/csw/2.0.2)&TypeNames=csw:Record&startPosition=1'}, 'oc': {'args': ('md_id', 'share_id', 'share_token'), 'url': 'https://open.isogeo.com/s/{share_id}/{share_token}/r/{md_id}'}, 'pixup_portal': {'args': ('md_id', 'portal_url'), 'url': 'http://{portal_url}/?muid={md_id}'}}¶
-
classmethod
cache_clearer
(only_already_hit=1)¶ Clear all LRU cached functions.
Parameters: only_already_hit (bool) – option to clear cache only for functions which have been already hit. Defaults to True.
-
classmethod
convert_octets
(octets)¶ Convert a mount of octets in readable size.
Parameters: octets (int) – mount of octets to convert Return type: str
-
classmethod
convert_uuid
(in_uuid=<class 'str'>, mode=0)¶ Convert a metadata UUID to its URI equivalent. And conversely.
Parameters: - in_uuid (str) – UUID or URI to convert
- mode (int) –
conversion direction. Options:
- 0 to HEX
- 1 to URN (RFC4122)
- 2 to URN (Isogeo specific style)
-
classmethod
credentials_loader
(in_credentials='client_secrets.json')¶ Loads API credentials from a file, JSON or INI.
Parameters: in_credentials (str) – path to the credentials file. By default, ./client_secrets.json Return type: dict Returns: a dictionary with credentials (ID, secret, URLs, platform…) Example: api_credentials = IsogeoUtils.credentials_loader("./_auth/client_secrets.json") pprint.pprint(api_credentials) >>> { 'auth_mode': 'group', 'client_id': 'python-minimalist-sdk-test-uuid-1a2b3c4d5e6f7g8h9i0j11k12l', 'client_secret': 'application-secret-1a2b3c4d5e6f7g8h9i0j11k12l13m14n15o16p17Q18rS', 'kind': None, 'platform': 'prod', 'scopes': ['resources:read'], 'staff': None, 'type': None, 'uri_auth': 'https://id.api.isogeo.com/oauth/authorize', 'uri_base': 'https://api.isogeo.com', 'uri_redirect': None, 'uri_token': 'https://id.api.isogeo.com/oauth/token' }
-
classmethod
encoded_words_to_text
(in_encoded_words)¶ Pull out the character set, encoding, and encoded text from the input encoded words. Next, it decodes the encoded words into a byte string, using either the quopri module or base64 module as determined by the encoding. Finally, it decodes the byte string using the character set and returns the result.
See:
Parameters: in_encoded_words (str) – base64 or quori encoded character string.
-
get_edit_url
(metadata, tab='identification')¶ Returns the edition URL of a metadata.
Parameters: - metadata (Metadata) – metadata
- tab (str) – target tab in the web form. Optionnal. Defaults to ‘identification’.
Return type: str
-
get_isogeo_version
(component='api', prot='https')¶ Get Isogeo components versions. Authentication not required.
Parameters: component (str) – which platform component. Options:
- api [default]
- db
- app
-
get_request_base_url
(route, prot='https')¶ Build the request url for the specified route.
Parameters: - route (str) – route to format
- prot (str) – https [DEFAULT] or http
Return type: str
-
classmethod
get_url_base_from_url_token
(url_api_token='https://id.api.isogeo.com/oauth/token')¶ Returns the Isogeo API root URL (not included into credentials file) from the token or the auth URL (always included).
Parameters: str (url_api_token) – url to Isogeo API ID token generator Return type: str Example: IsogeoUtils.get_url_base_from_url_token() >>> "https://api.isogeo.com" IsogeoUtils.get_url_base_from_url_token(url_api_token="https://id.api.qa.isogeo.com/oauth/token") >>> "https://api.qa.isogeo.com"
-
get_view_url
(webapp='oc', **kwargs)¶ Constructs the view URL of a metadata.
Parameters: - webapp (str) – web app destination
- kwargs (dict) – web app specific parameters. For example see WEBAPPS
-
classmethod
guess_platform_from_url
(url='https://api.isogeo.com/')¶ Returns the Isogeo platform from a given URL.
Parameters: str (url) – URL string to guess from Return type: str Returns: “prod” or “qa” or “unknown” Example: IsogeoUtils.guess_platform_from_url("https://api.isogeo.com") >>> "prod" IsogeoUtils.guess_platform_from_url("https://api.qa.isogeo.com") >>> "qa" IsogeoUtils.guess_platform_from_url("https://api.isogeo.ratp.local") >>> "unknown"
-
classmethod
hlpr_datetimes
(in_date, try_again=1)¶ Helper to handle differnts dates formats. See: https://github.com/isogeo/isogeo-api-py-minsdk/issues/85
Parameters: - raw_object (dict) – metadata dictionary returned by a request.json()
- try_again (bool) – iterations on the method
Returns: a correct datetime object
Return type: datetime
Example: # for an event date IsogeoUtils.hlpr_datetimes"2018-06-04T00:00:00+00:00") >>> 2018-06-04 00:00:00 # for a metadata creation date with 6 digits as milliseconds IsogeoUtils.hlpr_datetimes"2019-05-17T13:01:08.559123+00:00") >>> 2019-05-17 13:01:08.559123 # for a metadata creation date with more than 6 digits as milliseconds IsogeoUtils.hlpr_datetimes"2019-06-13T16:21:38.1917618+00:00") >>> 2019-06-13 16:21:38.191761
-
lang
= 'fr'¶
-
classmethod
pages_counter
(total, page_size=100)¶ Simple helper to handle pagination. Returns the number of pages for a given number of results.
Parameters: - total (int) – count of metadata in a search request
- page_size (int) – count of metadata to display in each page
Return type: int
-
register_webapp
(webapp_name, webapp_args, webapp_url)¶ Register a new WEBAPP to use with the view URL builder.
Parameters: - webapp_name (str) – name of the web app to register
- webapp_args (list) – dynamic arguments to complete the URL. Typically ‘md_id’.
- webapp_url (str) – URL of the web app to register with args tags to replace. Example: ‘https://www.ppige-npdc.fr/portail/geocatalogue?uuid={md_id}’
-
set_base_url
(platform='prod')¶ Set Isogeo base URLs according to platform.
Parameters: platform (str) – platform to use. Options:
- prod [DEFAULT]
- qa
- int
-
classmethod
set_lang_and_locale
(lang)¶ Set requests language and the matching locale.
Parameters: lang (str) – language code to set API localization (“en” or “fr”). Defaults to ‘fr’.
Reverse search tags dictionary to values as keys. Useful to populate filters comboboxes for example.
Parameters: - tags (dict) – tags dictionary from a search request
- prev_query (dict) – query parameters returned after a search request. Typically search.get(“query”).
- duplicated (str) –
what to do about duplicated tags label. Values:
- ignore - last tag parsed survives
- merge - add duplicated in value as separated list (sep = ‘||’)
- rename [default] - if duplicated tag labels are part of different workgroup, so the tag label is renamed with workgroup.
-