forked from LBRYCommunity/lbry-sdk
Merge pull request #3015 from lbryio/new_sdk_forwarding
added support for using the new SDK for `resolve` and `claim_search` by passing `--new_sdk_server`
This commit is contained in:
commit
bbc4113cac
3 changed files with 34 additions and 4 deletions
|
@ -986,10 +986,12 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
[--include_sent_supports]
|
[--include_sent_supports]
|
||||||
[--include_sent_tips]
|
[--include_sent_tips]
|
||||||
[--include_received_tips]
|
[--include_received_tips]
|
||||||
|
[--new_sdk_server=<new_sdk_server>]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--urls=<urls> : (str, list) one or more urls to resolve
|
--urls=<urls> : (str, list) one or more urls to resolve
|
||||||
--wallet_id=<wallet_id> : (str) wallet to check for claim purchase reciepts
|
--wallet_id=<wallet_id> : (str) wallet to check for claim purchase reciepts
|
||||||
|
--new_sdk_server=<new_sdk_server> : (str) URL of the new SDK server (EXPERIMENTAL)
|
||||||
--include_purchase_receipt : (bool) lookup and include a receipt if this wallet
|
--include_purchase_receipt : (bool) lookup and include a receipt if this wallet
|
||||||
has purchased the claim being resolved
|
has purchased the claim being resolved
|
||||||
--include_is_my_output : (bool) lookup and include a boolean indicating
|
--include_is_my_output : (bool) lookup and include a boolean indicating
|
||||||
|
@ -2327,6 +2329,7 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
[--not_locations=<not_locations>...]
|
[--not_locations=<not_locations>...]
|
||||||
[--order_by=<order_by>...] [--page=<page>] [--page_size=<page_size>]
|
[--order_by=<order_by>...] [--page=<page>] [--page_size=<page_size>]
|
||||||
[--wallet_id=<wallet_id>] [--include_purchase_receipt] [--include_is_my_output]
|
[--wallet_id=<wallet_id>] [--include_purchase_receipt] [--include_is_my_output]
|
||||||
|
[--new_sdk_server=<new_sdk_server>]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--name=<name> : (str) claim name (normalized)
|
--name=<name> : (str) claim name (normalized)
|
||||||
|
@ -2432,6 +2435,7 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
has purchased the claim
|
has purchased the claim
|
||||||
--include_is_my_output : (bool) lookup and include a boolean indicating
|
--include_is_my_output : (bool) lookup and include a boolean indicating
|
||||||
if claim being resolved is yours
|
if claim being resolved is yours
|
||||||
|
--new_sdk_server=<new_sdk_server> : (str) URL of the new SDK server (EXPERIMENTAL)
|
||||||
|
|
||||||
Returns: {Paginated[Output]}
|
Returns: {Paginated[Output]}
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -922,7 +922,10 @@ class Ledger(metaclass=LedgerRegistry):
|
||||||
txo.received_tips = tips
|
txo.received_tips = tips
|
||||||
return txos, blocked, outputs.offset, outputs.total
|
return txos, blocked, outputs.offset, outputs.total
|
||||||
|
|
||||||
async def resolve(self, accounts, urls, **kwargs):
|
async def resolve(self, accounts, urls, new_sdk_server=None, **kwargs):
|
||||||
|
if new_sdk_server:
|
||||||
|
resolve = partial(self.network.new_resolve, new_sdk_server)
|
||||||
|
else:
|
||||||
resolve = partial(self.network.retriable_call, self.network.resolve)
|
resolve = partial(self.network.retriable_call, self.network.resolve)
|
||||||
urls_copy = list(urls)
|
urls_copy = list(urls)
|
||||||
txos = []
|
txos = []
|
||||||
|
@ -943,9 +946,13 @@ class Ledger(metaclass=LedgerRegistry):
|
||||||
|
|
||||||
async def claim_search(
|
async def claim_search(
|
||||||
self, accounts, include_purchase_receipt=False, include_is_my_output=False,
|
self, accounts, include_purchase_receipt=False, include_is_my_output=False,
|
||||||
**kwargs) -> Tuple[List[Output], dict, int, int]:
|
new_sdk_server=None, **kwargs) -> Tuple[List[Output], dict, int, int]:
|
||||||
|
if new_sdk_server:
|
||||||
|
claim_search = partial(self.network.new_claim_search, new_sdk_server)
|
||||||
|
else:
|
||||||
|
claim_search = self.network.claim_search
|
||||||
return await self._inflate_outputs(
|
return await self._inflate_outputs(
|
||||||
self.network.claim_search(**kwargs), accounts,
|
claim_search(**kwargs), accounts,
|
||||||
include_purchase_receipt=include_purchase_receipt,
|
include_purchase_receipt=include_purchase_receipt,
|
||||||
include_is_my_output=include_is_my_output
|
include_is_my_output=include_is_my_output
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,6 +5,8 @@ from time import perf_counter
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from typing import Dict, Optional, Tuple
|
from typing import Dict, Optional, Tuple
|
||||||
|
|
||||||
|
import aiohttp
|
||||||
|
|
||||||
from lbry import __version__
|
from lbry import __version__
|
||||||
from lbry.error import IncompatibleWalletServerError
|
from lbry.error import IncompatibleWalletServerError
|
||||||
from lbry.wallet.rpc import RPCSession as BaseClientSession, Connector, RPCError, ProtocolError
|
from lbry.wallet.rpc import RPCSession as BaseClientSession, Connector, RPCError, ProtocolError
|
||||||
|
@ -181,6 +183,8 @@ class Network:
|
||||||
'blockchain.address.subscribe': self._on_status_controller,
|
'blockchain.address.subscribe': self._on_status_controller,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.aiohttp_session: Optional[aiohttp.ClientSession] = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def config(self):
|
def config(self):
|
||||||
return self.ledger.config
|
return self.ledger.config
|
||||||
|
@ -207,6 +211,7 @@ class Network:
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
self.running = True
|
self.running = True
|
||||||
|
self.aiohttp_session = aiohttp.ClientSession()
|
||||||
self._switch_task = asyncio.ensure_future(self.switch_forever())
|
self._switch_task = asyncio.ensure_future(self.switch_forever())
|
||||||
# this may become unnecessary when there are no more bugs found,
|
# this may become unnecessary when there are no more bugs found,
|
||||||
# but for now it helps understanding log reports
|
# but for now it helps understanding log reports
|
||||||
|
@ -217,6 +222,7 @@ class Network:
|
||||||
async def stop(self):
|
async def stop(self):
|
||||||
if self.running:
|
if self.running:
|
||||||
self.running = False
|
self.running = False
|
||||||
|
await self.aiohttp_session.close()
|
||||||
self._switch_task.cancel()
|
self._switch_task.cancel()
|
||||||
self.session_pool.stop()
|
self.session_pool.stop()
|
||||||
|
|
||||||
|
@ -316,6 +322,19 @@ class Network:
|
||||||
def claim_search(self, **kwargs):
|
def claim_search(self, **kwargs):
|
||||||
return self.rpc('blockchain.claimtrie.search', kwargs)
|
return self.rpc('blockchain.claimtrie.search', kwargs)
|
||||||
|
|
||||||
|
async def new_resolve(self, server, urls):
|
||||||
|
message = {"method": "resolve", "params": {"urls": urls, "protobuf": True}}
|
||||||
|
async with self.aiohttp_session.post(server, json=message) as r:
|
||||||
|
result = await r.json()
|
||||||
|
return result['result']
|
||||||
|
|
||||||
|
async def new_claim_search(self, server, **kwargs):
|
||||||
|
kwargs['protobuf'] = True
|
||||||
|
message = {"method": "claim_search", "params": kwargs}
|
||||||
|
async with self.aiohttp_session.post(server, json=message) as r:
|
||||||
|
result = await r.json()
|
||||||
|
return result['result']
|
||||||
|
|
||||||
|
|
||||||
class SessionPool:
|
class SessionPool:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue