forked from LBRYCommunity/lbry-sdk
fix est data cost / search
This commit is contained in:
parent
de4ddd578f
commit
419aa1d78f
2 changed files with 56 additions and 17 deletions
|
@ -34,7 +34,6 @@ from lbrynet.core.server.BlobAvailabilityHandler import BlobAvailabilityHandlerF
|
|||
from lbrynet.core.server.BlobRequestHandler import BlobRequestHandlerFactory
|
||||
from lbrynet.core.server.ServerProtocol import ServerProtocolFactory
|
||||
from lbrynet.core.Error import UnknownNameError, InsufficientFundsError
|
||||
from lbrynet.core.LBRYMetadata import Metadata
|
||||
from lbrynet.lbryfile.StreamDescriptor import LBRYFileStreamType
|
||||
from lbrynet.lbryfile.client.LBRYFileDownloader import LBRYFileSaverFactory, LBRYFileOpenerFactory
|
||||
from lbrynet.lbryfile.client.LBRYFileOptions import add_lbry_file_to_sd_identifier
|
||||
|
@ -1228,7 +1227,8 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
|
||||
def _add_key_fee(data_cost):
|
||||
d = self._resolve_name(name)
|
||||
d.addCallback(lambda info: data_cost if 'fee' not in info else data_cost + info['fee']['LBC']['amount'])
|
||||
d.addCallback(lambda info: self.exchange_rate_manager.to_lbc(info.get('fee', None)))
|
||||
d.addCallback(lambda fee: data_cost if fee is None else data_cost + fee.amount)
|
||||
return d
|
||||
|
||||
d = self._resolve_name(name)
|
||||
|
@ -1238,8 +1238,7 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
d.addCallback(self.sd_identifier.get_metadata_for_sd_blob)
|
||||
d.addCallback(lambda metadata: metadata.validator.info_to_show())
|
||||
d.addCallback(lambda info: int(dict(info)['stream_size']) / 1000000 * self.data_rate)
|
||||
d.addCallback(_add_key_fee)
|
||||
d.addErrback(lambda _: _add_key_fee(0.0))
|
||||
d.addCallbacks(_add_key_fee, lambda _: _add_key_fee(0.0))
|
||||
reactor.callLater(self.search_timeout, _check_est, d, name)
|
||||
|
||||
return d
|
||||
|
@ -1405,6 +1404,11 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
|
||||
return defer.succeed(None)
|
||||
|
||||
def _search(self, search):
|
||||
d = self.session.wallet.get_nametrie()
|
||||
d.addCallback(lambda trie: [claim for claim in trie if claim['name'].startswith(search) and 'txid' in claim])
|
||||
return d
|
||||
|
||||
def _render_response(self, result, code):
|
||||
return defer.succeed({'result': result, 'code': code})
|
||||
|
||||
|
@ -1719,6 +1723,15 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
return d
|
||||
|
||||
def jsonrpc_get_claim_info(self, p):
|
||||
"""
|
||||
Resolve claim info from a LBRY uri
|
||||
|
||||
Args:
|
||||
'name': name to look up, string, do not include lbry:// prefix
|
||||
Returns:
|
||||
txid, amount, value, n, height
|
||||
"""
|
||||
|
||||
def _convert_amount_to_float(r):
|
||||
r['amount'] = float(r['amount']) / 10**8
|
||||
return r
|
||||
|
@ -1839,6 +1852,21 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
d.addCallback(lambda r: self._render_response(r, OK_CODE))
|
||||
return d
|
||||
|
||||
def jsonrpc_get_est_cost(self, p):
|
||||
"""
|
||||
Get estimated cost for a lbry uri
|
||||
|
||||
Args:
|
||||
'name': lbry uri
|
||||
Returns:
|
||||
estimated cost
|
||||
"""
|
||||
|
||||
name = p['name']
|
||||
d = self._get_est_cost(name)
|
||||
d.addCallback(lambda r: self._render_response(r, OK_CODE))
|
||||
return d
|
||||
|
||||
def jsonrpc_search_nametrie(self, p):
|
||||
"""
|
||||
Search the nametrie for claims beginning with search (yes, this is a dumb search, it'll be made better)
|
||||
|
@ -1890,8 +1918,7 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
|
||||
log.info('Search nametrie: ' + search)
|
||||
|
||||
d = self.session.wallet.get_nametrie()
|
||||
d.addCallback(lambda trie: [claim for claim in trie if claim['name'].startswith(search) and 'txid' in claim])
|
||||
d = self._search(search)
|
||||
d.addCallback(lambda claims: claims[:self.max_search_results])
|
||||
d.addCallback(resolve_claims)
|
||||
d.addCallback(_clean)
|
||||
|
@ -2337,7 +2364,6 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
# No easy way to reveal specific files on Linux, so just open the containing directory
|
||||
d = threads.deferToThread(subprocess.Popen, ['xdg-open', os.dirname(path)])
|
||||
|
||||
|
||||
d.addCallback(lambda _: self._render_response(True, OK_CODE))
|
||||
return d
|
||||
|
||||
|
|
|
@ -145,10 +145,17 @@ class ExchangeRateManager(object):
|
|||
return {market: market.rate.as_dict() for market in self.market_feeds}
|
||||
|
||||
def to_lbc(self, fee):
|
||||
return LBRYFeeValidator({fee.currency_symbol:
|
||||
if fee is None:
|
||||
return None
|
||||
if not isinstance(fee, LBRYFeeValidator):
|
||||
fee_in = LBRYFeeValidator(fee)
|
||||
else:
|
||||
fee_in = fee
|
||||
|
||||
return LBRYFeeValidator({fee_in.currency_symbol:
|
||||
{
|
||||
'amount': self.convert_currency(fee.currency_symbol, "LBC", fee.amount),
|
||||
'address': fee.address
|
||||
'amount': self.convert_currency(fee.currency_symbol, "LBC", fee_in.amount),
|
||||
'address': fee_in.address
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -192,11 +199,17 @@ class DummyExchangeRateManager(object):
|
|||
if market.rate.currency_pair[0] == from_currency:
|
||||
return self.convert_currency(market.rate.currency_pair[1], to_currency, amount * market.rate.spot)
|
||||
|
||||
def to_lbc(self, f):
|
||||
fee = LBRYFeeValidator(f)
|
||||
return LBRYFeeValidator({fee.currency_symbol:
|
||||
{
|
||||
'amount': self.convert_currency(fee.currency_symbol, "LBC", fee.amount),
|
||||
'address': fee.address
|
||||
}
|
||||
def to_lbc(self, fee):
|
||||
if fee is None:
|
||||
return None
|
||||
if not isinstance(fee, LBRYFeeValidator):
|
||||
fee_in = LBRYFeeValidator(fee)
|
||||
else:
|
||||
fee_in = fee
|
||||
|
||||
return LBRYFeeValidator({fee_in.currency_symbol:
|
||||
{
|
||||
'amount': self.convert_currency(fee.currency_symbol, "LBC", fee_in.amount),
|
||||
'address': fee_in.address
|
||||
}
|
||||
})
|
Loading…
Add table
Reference in a new issue