Browse Source

Simply some of exchange_rate plugin

283
Neil Booth 9 years ago
parent
commit
19e128adf0
  1. 35
      plugins/exchange_rate.py

35
plugins/exchange_rate.py

@ -39,21 +39,13 @@ class Exchanger(ThreadJob):
def __init__(self, parent): def __init__(self, parent):
self.parent = parent self.parent = parent
self.quote_currencies = None self.quotes = {}
self.timeout = 0 self.timeout = 0
def get_json(self, site, get_string): def get_json(self, site, get_string):
resp = requests.request('GET', 'https://' + site + get_string, headers={"User-Agent":"Electrum"}) resp = requests.request('GET', 'https://' + site + get_string, headers={"User-Agent":"Electrum"})
return resp.json() return resp.json()
def exchange(self, btc_amount, quote_currency):
if self.quote_currencies is None:
return None
quote_currencies = self.quote_currencies.copy()
if quote_currency not in quote_currencies:
return None
return btc_amount * Decimal(str(quote_currencies[quote_currency]))
def update_rate(self): def update_rate(self):
update_rates = { update_rates = {
"BitcoinAverage": self.update_ba, "BitcoinAverage": self.update_ba,
@ -76,7 +68,7 @@ class Exchanger(ThreadJob):
except Exception as e: except Exception as e:
self.parent.print_error(e) self.parent.print_error(e)
rates = {} rates = {}
self.quote_currencies = rates self.quotes = rates
self.parent.set_currencies(rates) self.parent.set_currencies(rates)
self.parent.refresh_fields() self.parent.refresh_fields()
@ -205,6 +197,12 @@ class Plugin(BasePlugin):
window.emit(SIGNAL("refresh_currencies()")) window.emit(SIGNAL("refresh_currencies()"))
window.emit(SIGNAL("refresh_currencies_combo()")) window.emit(SIGNAL("refresh_currencies_combo()"))
def exchange_rate(self):
'''Returns None, or the exchange rate as a Decimal'''
rate = self.exchanger.quotes.get(self.fiat_unit())
if rate:
return Decimal(str(rate))
@hook @hook
def get_fiat_balance_text(self, btc_balance, r): def get_fiat_balance_text(self, btc_balance, r):
# return balance as: 1.23 USD # return balance as: 1.23 USD
@ -234,14 +232,13 @@ class Plugin(BasePlugin):
r2[0] = text r2[0] = text
def create_fiat_balance_text(self, btc_balance): def create_fiat_balance_text(self, btc_balance):
quote_currency = self.fiat_unit() cur_rate = self.exchange_rate()
cur_rate = self.exchanger.exchange(Decimal("1.0"), quote_currency)
if cur_rate is None: if cur_rate is None:
quote_text = "" quote_text = ""
else: else:
quote_balance = btc_balance * Decimal(cur_rate) quote_balance = btc_balance * Decimal(cur_rate)
self.btc_rate = cur_rate self.btc_rate = cur_rate
quote_text = "%.2f %s" % (quote_balance, quote_currency) quote_text = "%.2f %s" % (quote_balance, self.fiat_unit())
return quote_text return quote_text
@hook @hook
@ -529,7 +526,7 @@ class Plugin(BasePlugin):
btc_e.setText("") btc_e.setText("")
if fee_e: fee_e.setText("") if fee_e: fee_e.setText("")
return return
exchange_rate = self.exchanger.exchange(Decimal("1.0"), self.fiat_unit()) exchange_rate = self.exchange_rate()
if exchange_rate is not None: if exchange_rate is not None:
btc_amount = fiat_amount/exchange_rate btc_amount = fiat_amount/exchange_rate
btc_e.setAmount(int(btc_amount*Decimal(COIN))) btc_e.setAmount(int(btc_amount*Decimal(COIN)))
@ -539,14 +536,12 @@ class Plugin(BasePlugin):
def btc_changed(): def btc_changed():
btc_e.setStyleSheet(BLACK_FG) btc_e.setStyleSheet(BLACK_FG)
window.fx_fields[(fiat_e, btc_e)] = btc_e window.fx_fields[(fiat_e, btc_e)] = btc_e
if self.exchanger is None:
return
btc_amount = btc_e.get_amount() btc_amount = btc_e.get_amount()
if btc_amount is None: rate = self.exchange_rate()
if rate is None or btc_amount is None:
fiat_e.setText("") fiat_e.setText("")
return else:
fiat_amount = self.exchanger.exchange(Decimal(btc_amount)/Decimal(COIN), self.fiat_unit()) fiat_amount = rate * Decimal(btc_amount) / Decimal(COIN)
if fiat_amount is not None:
pos = fiat_e.cursorPosition() pos = fiat_e.cursorPosition()
fiat_e.setText("%.2f"%fiat_amount) fiat_e.setText("%.2f"%fiat_amount)
fiat_e.setCursorPosition(pos) fiat_e.setCursorPosition(pos)

Loading…
Cancel
Save