here.platform.config.platform_config

Source code for here.platform.config.platform_config

Copyright (C) 2020-2022 HERE Global B.V. and its affiliate(s).

All rights reserved.

This software and other materials contain proprietary information

controlled by HERE and are protected by applicable copyright legislation.

Any use and utilization of this software and other materials and

disclosure to any third parties is conditional upon having a separate

agreement with HERE for the access, use, utilization or disclosure of this

software. In the absence of such agreement, the use of the software is not

allowed.

"""
This module provides a PlatformConfig class to be used for platform configuration management.

A config object can be created from a platform_config.conf file in the package.
"""

import os
from os.path import expanduser, expandvars
from pathlib import Path
from typing import Optional

from here.platform.environment import Environment
from here.platform.exceptions import ConfigException
from here.platform.utils.properties_helper import PropertiesDict

[docs]
class PlatformConfig:
"""
PlatformConfig provides functions for dealing with the HERE platform
Config.

Config can be read from the packaged platform_config.conf file based on platform environment
"""

def init(
self,
api: str,
portal_url: Optional[str] = None,
status_url: Optional[str] = None,
platform_status_url: Optional[str] = None,
account_url: Optional[str] = None,
lookup_api_prefix: Optional[str] = None,
):
"""
Instantiate the PlatformConfig object.

:param api: Platform API.
:param portal_url: (Optional) Platform portal URL.
:param status_url: (Optional) Status URL.
:param platform_status_url: (Optional) Platform status api URL.
:param account_url: (Optional) Account URL.
:param lookup_api_prefix: (Optional) Prefix to apply for the lookup API.
"""
self.api = api
self.portal_url = portal_url
self.status_url = status_url
self.platform_status_url = platform_status_url
self.account_url = account_url
self.lookup_api_prefix = lookup_api_prefix

[docs]
@classmethod
def from_environment(cls, environment: Environment) -> "PlatformConfig":
"""
Return the config object from a specified config file path.

:param environment: an instance of Environment enum.
:return: config
"""

this_dir = Path(file).parent
path = this_dir / environment.name.lower() / "platform_config.conf"
return cls._from_config_file(os.fspath(path))

@classmethod
def _from_config_file(cls, path: str) -> "PlatformConfig":
"""
Return the config object from a specified config file path.

:param path: path to a HERE platform platform_config.conf file.
:return: config
:raises ConfigException: Erroneous platform_config.conf file in path
"""
config_path = expanduser(expandvars(path))

try:
config_properties = PropertiesDict.parse(config_path)
return PlatformConfig(

this will raise ConfigException if key is not present

api=config_properties["here_platform_api"],

following params are optional

portal_url=config_properties.get("here_platform_portal_url", None),
status_url=config_properties.get("here_status_url", None),
platform_status_url=config_properties.get("platform_status_api_url", None),
account_url=config_properties.get("here_account_api_url", None),
lookup_api_prefix=config_properties.get("here_lookup_api_prefix", None),
)
except Exception as e:
raise ConfigException(f"Erroneous {config_path} file: {e}")