def query_balances(self) -> Tuple[Optional[dict], str]: try: self.first_connection() old_balances = self.query_private('Balance', req={}) # find USD price of EUR with self.lock: self.usdprice['EUR'] = query_fiat_pair('EUR', 'USD') except RemoteError as e: msg = ( 'Kraken API request failed. Could not reach kraken due ' 'to {}'.format(e) ) logger.error(msg) return None, msg balances = dict() for k, v in old_balances.items(): v = FVal(v) if v == FVal(0): continue common_name = KRAKEN_TO_WORLD[k] entry = {} entry['amount'] = v if common_name in self.usdprice: entry['usd_value'] = v * self.usdprice[common_name] else: entry['usd_value'] = v * self.find_fiat_price(k) balances[common_name] = entry return balances, ''
def set_settings(self, settings): log.info('Add new settings') message = '' with self.lock: if 'eth_rpc_port' in settings: result, msg = self.blockchain.set_eth_rpc_port( settings['eth_rpc_port']) if not result: # Don't save it in the DB del settings['eth_rpc_port'] message += "\nEthereum RPC port not set: " + msg if 'main_currency' in settings: main_currency = settings['main_currency'] if main_currency != 'USD': self.usd_to_main_currency_rate = query_fiat_pair( 'USD', main_currency) res, msg = self.accountant.customize(settings) if not res: message += '\n' + msg return False, message _, msg, = self.data.set_settings(settings, self.accountant) if msg != '': message += '\n' + msg # Always return success here but with a message return True, message
def set_settings(self, settings): with self.lock: self.data.set_settings(settings) main_currency = settings['main_currency'] if main_currency != 'USD': self.usd_to_main_currency_rate = query_fiat_pair( 'USD', main_currency)
def usd_to_main_currency(self, amount): main_currency = self.data.main_currency() if main_currency != 'USD' and not hasattr(self, 'usd_to_main_currency_rate'): self.usd_to_main_currency_rate = query_fiat_pair( 'USD', main_currency) return self.usd_to_main_currency_rate * amount
def get_fiat_usd_exchange_rates(currencies=None): rates = {'USD': 1} if not currencies: currencies = FIAT_CURRENCIES[1:] for currency in currencies: rates[currency] = query_fiat_pair('USD', currency) return rates
def get_fiat_usd_exchange_rates( currencies: Optional[Iterable[typing.FiatAsset]] = None, ) -> Dict[typing.FiatAsset, FVal]: rates = {S_USD: FVal(1)} if not currencies: currencies = FIAT_CURRENCIES[1:] for currency in currencies: rates[currency] = query_fiat_pair(S_USD, currency) return rates
def query_fiat_balances(self): result = {} balances = self.data.get_fiat_balances() for currency, amount in balances.items(): amount = FVal(amount) usd_rate = query_fiat_pair(currency, 'USD') result[currency] = { 'amount': amount, 'usd_value': amount * usd_rate } return result
def set_settings(self, settings): message = '' with self.lock: if 'eth_rpc_port' in settings: result, msg = self.blockchain.set_eth_rpc_port( settings['eth_rpc_port']) if not result: # Don't save it in the DB del settings['eth_rpc_port'] message += "\nEthereum RPC port not set: " + msg if 'main_currency' in settings: main_currency = settings['main_currency'] if main_currency != 'USD': self.usd_to_main_currency_rate = query_fiat_pair( 'USD', main_currency) self.data.set_settings(settings, self.accountant) # Always return success but with a message return True, message
def query_balances(self): self.first_connection() old_balances = self.query_private('Balance', req={}) # find USD price of EUR with self.lock: self.usdprice['EUR'] = query_fiat_pair('EUR', 'USD') balances = dict() for k, v in old_balances.items(): v = FVal(v) if v == FVal(0): continue common_name = KRAKEN_TO_WORLD[k] entry = {} entry['amount'] = v if common_name in self.usdprice: entry['usd_value'] = v * self.usdprice[common_name] else: entry['usd_value'] = v * self.find_fiat_price(k) balances[common_name] = entry return balances
def set_main_currency(self, currency): with self.lock: self.data.set_main_currency(currency, self.accountant) if currency != 'USD': self.usd_to_main_currency_rate = query_fiat_pair( 'USD', currency)