Skip to content

Commit

Permalink
Merge pull request #3015 from lbryio/new_sdk_forwarding
Browse files Browse the repository at this point in the history
added support for using the new SDK for `resolve` and `claim_search` by passing `--new_sdk_server`
  • Loading branch information
eukreign authored Aug 4, 2020
2 parents bd83ee7 + 91194bf commit bbc4113
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 4 deletions.
4 changes: 4 additions & 0 deletions lbry/extras/daemon/daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -986,10 +986,12 @@ async def jsonrpc_resolve(self, urls: typing.Union[str, list], wallet_id=None, *
[--include_sent_supports]
[--include_sent_tips]
[--include_received_tips]
[--new_sdk_server=<new_sdk_server>]
Options:
--urls=<urls> : (str, list) one or more urls to resolve
--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
has purchased the claim being resolved
--include_is_my_output : (bool) lookup and include a boolean indicating
Expand Down Expand Up @@ -2327,6 +2329,7 @@ async def jsonrpc_claim_search(self, **kwargs):
[--not_locations=<not_locations>...]
[--order_by=<order_by>...] [--page=<page>] [--page_size=<page_size>]
[--wallet_id=<wallet_id>] [--include_purchase_receipt] [--include_is_my_output]
[--new_sdk_server=<new_sdk_server>]
Options:
--name=<name> : (str) claim name (normalized)
Expand Down Expand Up @@ -2432,6 +2435,7 @@ async def jsonrpc_claim_search(self, **kwargs):
has purchased the claim
--include_is_my_output : (bool) lookup and include a boolean indicating
if claim being resolved is yours
--new_sdk_server=<new_sdk_server> : (str) URL of the new SDK server (EXPERIMENTAL)
Returns: {Paginated[Output]}
"""
Expand Down
15 changes: 11 additions & 4 deletions lbry/wallet/ledger.py
Original file line number Diff line number Diff line change
Expand Up @@ -922,8 +922,11 @@ async def _inflate_outputs(
txo.received_tips = tips
return txos, blocked, outputs.offset, outputs.total

async def resolve(self, accounts, urls, **kwargs):
resolve = partial(self.network.retriable_call, self.network.resolve)
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)
urls_copy = list(urls)
txos = []
while urls_copy:
Expand All @@ -943,9 +946,13 @@ async def resolve(self, accounts, urls, **kwargs):

async def claim_search(
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(
self.network.claim_search(**kwargs), accounts,
claim_search(**kwargs), accounts,
include_purchase_receipt=include_purchase_receipt,
include_is_my_output=include_is_my_output
)
Expand Down
19 changes: 19 additions & 0 deletions lbry/wallet/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from operator import itemgetter
from typing import Dict, Optional, Tuple

import aiohttp

from lbry import __version__
from lbry.error import IncompatibleWalletServerError
from lbry.wallet.rpc import RPCSession as BaseClientSession, Connector, RPCError, ProtocolError
Expand Down Expand Up @@ -181,6 +183,8 @@ def __init__(self, ledger):
'blockchain.address.subscribe': self._on_status_controller,
}

self.aiohttp_session: Optional[aiohttp.ClientSession] = None

@property
def config(self):
return self.ledger.config
Expand All @@ -207,6 +211,7 @@ async def switch_forever(self):

async def start(self):
self.running = True
self.aiohttp_session = aiohttp.ClientSession()
self._switch_task = asyncio.ensure_future(self.switch_forever())
# this may become unnecessary when there are no more bugs found,
# but for now it helps understanding log reports
Expand All @@ -217,6 +222,7 @@ async def start(self):
async def stop(self):
if self.running:
self.running = False
await self.aiohttp_session.close()
self._switch_task.cancel()
self.session_pool.stop()

Expand Down Expand Up @@ -316,6 +322,19 @@ def resolve(self, urls):
def claim_search(self, **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:

Expand Down

0 comments on commit bbc4113

Please sign in to comment.