import os import logging from configparser import ConfigParser logger = logging.getLogger('app') def str_to_bool(s): if s.lower() == 'true': return True elif s.lower() == 'false': return False else: raise ValueError class Config(object): def __init__(self, env="dev"): """ ENV : dev, prod """ config = ConfigParser() def_config_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), '', 'main.cfg') env_config_file = '' if env: env_config_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), '', f'{env}.cfg') conf_files = [def_config_file] if not env: logger.warning('missing config environment variable') else: logger.info('env_config_load: {} file'.format(env_config_file)) conf_files.append(env_config_file) logger.info('action=load-conf-file,files={}'.format(conf_files)) config.read(conf_files) self.default_params = config.items('main') # configuration self.USE_SELENIUM = str_to_bool(self.get_config_param('USE_SELENIUM')) self.LOG_FILE = os.path.join(os.getcwd(), self.get_config_param('LOG_FILE')) self.BROWSER = self.get_config_param('BROWSER') self.PATH_BROWSER_FIREFOX = self.get_config_param('PATH_BROWSER_FIREFOX') self.SECRET_KEY = self.get_config_param('SECRET_KEY') self.HEADLESS = str_to_bool(self.get_config_param('HEADLESS')) self.MAX_NUM_CHAPTER = int(self.get_config_param('MAX_NUM_CHAPTER')) self.AWS_ACCESS_KEY_ID = self.get_config_param('AWS_ACCESS_KEY_ID') self.AWS_SECRET_ACCESS_KEY = self.get_config_param('AWS_SECRET_ACCESS_KEY') self.AWS_S3_REGION_NAME = self.get_config_param('AWS_S3_REGION_NAME') self.AWS_S3_END_POINT = self.get_config_param('AWS_S3_END_POINT') self.AWS_S3_BUCKET_NAME = self.get_config_param('AWS_S3_BUCKET_NAME') self.HOST_GATEWAY_IMAGE = self.get_config_param('HOST_GATEWAY_IMAGE') self.TYPE_LINK_IMAGE = self.get_config_param('TYPE_LINK_IMAGE') self.DOMAIN_TRUYENFULL = self.get_config_param('DOMAIN_TRUYENFULL') def get_config_param(self, param): if param in os.environ: logger.info('setting %s = %s' % (param, os.environ[param])) return os.environ[param] for t in self.default_params: if param.lower() in t: return t[1] logger.error('action=config-error-missing-param, parameter_name={}'.format(param))