USD denominated max_key_fee in settings
This commit is contained in:
parent
49c26a76b4
commit
102436274f
2 changed files with 29 additions and 8 deletions
|
@ -22,6 +22,10 @@ class ConnectionClosedBeforeResponseError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class KeyFeeAboveMaxAllowed(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class UnknownNameError(Exception):
|
class UnknownNameError(Exception):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
|
@ -8,7 +8,7 @@ from datetime import datetime
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
from twisted.internet.task import LoopingCall
|
from twisted.internet.task import LoopingCall
|
||||||
|
|
||||||
from lbrynet.core.Error import InvalidStreamInfoError, InsufficientFundsError
|
from lbrynet.core.Error import InvalidStreamInfoError, InsufficientFundsError, KeyFeeAboveMaxAllowed
|
||||||
from lbrynet.core.PaymentRateManager import PaymentRateManager
|
from lbrynet.core.PaymentRateManager import PaymentRateManager
|
||||||
from lbrynet.core.StreamDescriptor import download_sd_blob
|
from lbrynet.core.StreamDescriptor import download_sd_blob
|
||||||
from lbrynet.core.LBRYMetadata import Metadata, LBRYFee
|
from lbrynet.core.LBRYMetadata import Metadata, LBRYFee
|
||||||
|
@ -124,17 +124,34 @@ class GetStream(object):
|
||||||
def _start_download(self, downloader):
|
def _start_download(self, downloader):
|
||||||
def _pay_key_fee():
|
def _pay_key_fee():
|
||||||
if self.fee is not None:
|
if self.fee is not None:
|
||||||
x = self.fee.to_lbc()
|
if isinstance(self.max_key_fee, int):
|
||||||
reserved_points = self.wallet.reserve_points(self.fee.address, x)
|
fee_lbc = self.fee.to_lbc()
|
||||||
if reserved_points is None:
|
if fee_lbc > self.max_key_fee:
|
||||||
return defer.fail(InsufficientFundsError())
|
return defer.fail(KeyFeeAboveMaxAllowed())
|
||||||
log.info("Key fee: %f --> %s" % (x, self.fee.address))
|
reserved_points = self.wallet.reserve_points(self.fee.address, fee_lbc)
|
||||||
return self.wallet.send_points_to_address(reserved_points, self.fee.address)
|
if reserved_points is None:
|
||||||
|
return defer.fail(InsufficientFundsError())
|
||||||
|
log.info("Key fee: %f --> %s" % (fee_lbc, self.fee.address))
|
||||||
|
return self.wallet.send_points_to_address(reserved_points, self.fee.address)
|
||||||
|
else:
|
||||||
|
assert "USD" in self.max_key_fee
|
||||||
|
max_fee = LBRYFee(self.max_key_fee, {'USDBTC': self.wallet._USDBTC, 'BTCLBC': self.wallet._BTCLBC})
|
||||||
|
fee_lbc = self.fee.to_lbc()
|
||||||
|
if fee_lbc > max_fee.to_lbc():
|
||||||
|
return defer.fail(KeyFeeAboveMaxAllowed())
|
||||||
|
reserved_points = self.wallet.reserve_points(self.fee.address, fee_lbc)
|
||||||
|
if reserved_points is None:
|
||||||
|
return defer.fail(InsufficientFundsError())
|
||||||
|
log.info("Key fee: %f --> %s" % (fee_lbc, self.fee.address))
|
||||||
|
return self.wallet.send_points_to_address(reserved_points, self.fee.address)
|
||||||
|
|
||||||
|
|
||||||
return defer.succeed(None)
|
return defer.succeed(None)
|
||||||
|
|
||||||
d = _pay_key_fee()
|
|
||||||
self.downloader = downloader
|
self.downloader = downloader
|
||||||
self.download_path = os.path.join(downloader.download_directory, downloader.file_name)
|
self.download_path = os.path.join(downloader.download_directory, downloader.file_name)
|
||||||
|
|
||||||
|
d = _pay_key_fee()
|
||||||
d.addCallback(lambda _: log.info("Downloading %s --> %s", self.stream_hash, self.downloader.file_name))
|
d.addCallback(lambda _: log.info("Downloading %s --> %s", self.stream_hash, self.downloader.file_name))
|
||||||
d.addCallback(lambda _: self.downloader.start())
|
d.addCallback(lambda _: self.downloader.start())
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue