fix insufficient funds and max key fee bug

This commit is contained in:
Jack 2016-11-14 13:41:05 -05:00
parent 472bb6af1b
commit f45a2cba32

View file

@ -77,13 +77,10 @@ class GetStream(object):
self.finished.callback((False, None, None)) self.finished.callback((False, None, None))
def _convert_max_fee(self): def _convert_max_fee(self):
if isinstance(self.max_key_fee, dict):
max_fee = FeeValidator(self.max_key_fee) max_fee = FeeValidator(self.max_key_fee)
if max_fee.currency_symbol == "LBC": if max_fee.currency_symbol == "LBC":
return max_fee.amount return max_fee.amount
return self.exchange_rate_manager.to_lbc(self.fee).amount return self.exchange_rate_manager.to_lbc(self.max_key_fee).amount
elif isinstance(self.max_key_fee, float):
return float(self.max_key_fee)
def start(self, stream_info, name): def start(self, stream_info, name):
def _cause_timeout(err): def _cause_timeout(err):
@ -117,14 +114,18 @@ class GetStream(object):
if 'fee' in self.stream_info: if 'fee' in self.stream_info:
self.fee = FeeValidator(self.stream_info['fee']) self.fee = FeeValidator(self.stream_info['fee'])
max_key_fee = self._convert_max_fee() max_key_fee = self._convert_max_fee()
if self.exchange_rate_manager.to_lbc(self.fee).amount > max_key_fee: converted_fee = self.exchange_rate_manager.to_lbc(self.fee).amount
log.info("Key fee %f above limit of %f didn't download lbry://%s" % (self.fee.amount, if converted_fee > self.wallet.get_balance():
self.max_key_fee, log.warning("Insufficient funds to download lbry://%s", self.resolved_name)
self.resolved_name)) return defer.fail(InsufficientFundsError())
return defer.fail(KeyFeeAboveMaxAllowed()) if converted_fee > max_key_fee:
log.info("Key fee %s below limit of %f, downloading lbry://%s" % (json.dumps(self.fee), log.warning("Key fee %f above limit of %f didn't download lbry://%s", converted_fee,
max_key_fee, max_key_fee,
self.resolved_name)) self.resolved_name)
return defer.fail(KeyFeeAboveMaxAllowed())
log.info("Key fee %f below limit of %f, downloading lbry://%s", converted_fee,
max_key_fee,
self.resolved_name)
self.checker.start(1) self.checker.start(1)