def create_client(self): if self.exchange_manager.ignore_config or self.exchange_manager.check_config( self.get_name()): try: if self.exchange_manager.ignore_config or not self.exchange_manager.should_decrypt_token( self.logger): key = "" secret = "" password = "" else: config_exchange = self.config[CONFIG_EXCHANGES][self.name] key = decrypt(config_exchange[CONFIG_EXCHANGE_KEY]) secret = decrypt(config_exchange[CONFIG_EXCHANGE_SECRET]) password = decrypt(config_exchange[CONFIG_EXCHANGE_PASSWORD]) \ if CONFIG_EXCHANGE_PASSWORD in config_exchange and \ not ConfigManager.has_invalid_default_config_value(config_exchange[CONFIG_EXCHANGE_PASSWORD]) \ else None self.client = self.exchange_type({ 'apiKey': key, 'secret': secret, 'password': password, 'verbose': False, 'enableRateLimit': True }) except Exception as e: self.exchange_manager.handle_token_error(e, self.logger) self.client = self.exchange_type({'verbose': False}) else: self.client = self.exchange_type({'verbose': False}) self.logger.error( "configuration issue: missing login information !") self.client.logger.setLevel(logging.INFO)
def should_decrypt_token(self, logger): if ConfigManager.has_invalid_default_config_value( self.config[CONFIG_EXCHANGES][self.get_exchange_name()][CONFIG_EXCHANGE_KEY], self.config[CONFIG_EXCHANGES][self.get_exchange_name()][CONFIG_EXCHANGE_SECRET]): logger.warning("Exchange configuration tokens are not set yet, to use OctoBot's real trader's features, " "please enter your api tokens in exchange configuration") return False return True
def check_required_config(self, config): return all(key in config for key in self.get_required_config()) and \ not ConfigManager.has_invalid_default_config_value(*(config[key] for key in self.get_required_config()))