Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions cycode/cyclient/config.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import logging
import os
import sys
from typing import Optional
from typing import Optional, Union
from urllib.parse import urlparse

from cycode.cli import consts
from cycode.cli.user_settings.configuration_manager import ConfigurationManager
from cycode.cyclient.config_dev import DEV_MODE_ENV_VAR_NAME, DEV_TENANT_ID_ENV_VAR_NAME
from cycode.cyclient import config_dev


def _set_io_encodings() -> None:
Expand Down Expand Up @@ -37,20 +37,22 @@ def _set_io_encodings() -> None:
DEFAULT_CONFIGURATION = {
consts.TIMEOUT_ENV_VAR_NAME: 300,
consts.LOGGING_LEVEL_ENV_VAR_NAME: logging.INFO,
DEV_MODE_ENV_VAR_NAME: 'False',
config_dev.DEV_MODE_ENV_VAR_NAME: 'false',
}

configuration = dict(DEFAULT_CONFIGURATION, **os.environ)

_CREATED_LOGGERS = set()


def get_logger(logger_name: Optional[str] = None) -> logging.Logger:
config_level = _get_val_as_string(consts.LOGGING_LEVEL_ENV_VAR_NAME)
level = logging.getLevelName(config_level)
def get_logger_level() -> Optional[Union[int, str]]:
config_level = get_val_as_string(consts.LOGGING_LEVEL_ENV_VAR_NAME)
return logging.getLevelName(config_level)


def get_logger(logger_name: Optional[str] = None) -> logging.Logger:
new_logger = logging.getLogger(logger_name)
new_logger.setLevel(level)
new_logger.setLevel(get_logger_level())

_CREATED_LOGGERS.add(new_logger)

Expand All @@ -62,24 +64,24 @@ def set_logging_level(level: int) -> None:
created_logger.setLevel(level)


def _get_val_as_string(key: str) -> str:
def get_val_as_string(key: str) -> str:
return configuration.get(key)


def _get_val_as_bool(key: str, default: str = '') -> bool:
def get_val_as_bool(key: str, default: str = '') -> bool:
val = configuration.get(key, default)
return val.lower() in ('true', '1')
return val.lower() in {'true', '1'}


def _get_val_as_int(key: str) -> Optional[int]:
def get_val_as_int(key: str) -> Optional[int]:
val = configuration.get(key)
if val:
return int(val)

return None


def _is_valid_url(url: str) -> bool:
def is_valid_url(url: str) -> bool:
try:
urlparse(url)
return True
Expand All @@ -92,12 +94,12 @@ def _is_valid_url(url: str) -> bool:
configuration_manager = ConfigurationManager()

cycode_api_url = configuration_manager.get_cycode_api_url()
if not _is_valid_url(cycode_api_url):
if not is_valid_url(cycode_api_url):
cycode_api_url = consts.DEFAULT_CYCODE_API_URL

timeout = _get_val_as_int(consts.CYCODE_CLI_REQUEST_TIMEOUT_ENV_VAR_NAME)
timeout = get_val_as_int(consts.CYCODE_CLI_REQUEST_TIMEOUT_ENV_VAR_NAME)
if not timeout:
timeout = _get_val_as_int(consts.TIMEOUT_ENV_VAR_NAME)
timeout = get_val_as_int(consts.TIMEOUT_ENV_VAR_NAME)

dev_mode = _get_val_as_bool(DEV_MODE_ENV_VAR_NAME)
dev_tenant_id = _get_val_as_string(DEV_TENANT_ID_ENV_VAR_NAME)
dev_mode = get_val_as_bool(config_dev.DEV_MODE_ENV_VAR_NAME)
dev_tenant_id = get_val_as_string(config_dev.DEV_TENANT_ID_ENV_VAR_NAME)