From fe61b906101dd3d33b8715bf6f15adb8da264d80 Mon Sep 17 00:00:00 2001 From: Lex Berezhny Date: Wed, 8 Jun 2022 10:35:22 -0400 Subject: [PATCH] reposts can have title, description and tags --- lbry/extras/daemon/daemon.py | 14 ++++++++--- .../integration/claims/test_claim_commands.py | 24 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/lbry/extras/daemon/daemon.py b/lbry/extras/daemon/daemon.py index c9983f756..6e8d5adcc 100644 --- a/lbry/extras/daemon/daemon.py +++ b/lbry/extras/daemon/daemon.py @@ -3301,15 +3301,17 @@ class Daemon(metaclass=JSONRPCServerType): ) @requires(WALLET_COMPONENT, FILE_MANAGER_COMPONENT, BLOB_COMPONENT, DATABASE_COMPONENT) - async def jsonrpc_stream_repost(self, name, bid, claim_id, allow_duplicate_name=False, channel_id=None, - channel_name=None, channel_account_id=None, account_id=None, wallet_id=None, - claim_address=None, funding_account_ids=None, preview=False, blocking=False): + async def jsonrpc_stream_repost( + self, name, bid, claim_id, allow_duplicate_name=False, channel_id=None, + channel_name=None, channel_account_id=None, account_id=None, wallet_id=None, + claim_address=None, funding_account_ids=None, preview=False, blocking=False, **kwargs): """ Creates a claim that references an existing stream by its claim id. Usage: stream_repost ( | --name=) ( | --bid=) ( | --claim_id=) [--allow_duplicate_name=] + [--title=] [--description=<description>] [--tags=<tags>...] [--channel_id=<channel_id> | --channel_name=<channel_name>] [--channel_account_id=<channel_account_id>...] [--account_id=<account_id>] [--wallet_id=<wallet_id>] @@ -3322,6 +3324,9 @@ class Daemon(metaclass=JSONRPCServerType): --claim_id=<claim_id> : (str) id of the claim being reposted --allow_duplicate_name=<allow_duplicate_name> : (bool) create new claim even if one already exists with given name. default: false. + --title=<title> : (str) title of the repost + --description=<description> : (str) description of the repost + --tags=<tags> : (list) add repost tags --channel_id=<channel_id> : (str) claim id of the publisher channel --channel_name=<channel_name> : (str) name of the publisher channel --channel_account_id=<channel_account_id>: (str) one or more account ids for accounts to look in @@ -3356,6 +3361,7 @@ class Daemon(metaclass=JSONRPCServerType): raise Exception('Invalid claim id. It is expected to be a 40 characters long hexadecimal string.') claim = Claim() + claim.repost.update(**kwargs) claim.repost.reference.claim_id = claim_id tx = await Transaction.claim_create( name, claim, amount, claim_address, funding_accounts, funding_accounts[0], channel @@ -3736,6 +3742,8 @@ class Daemon(metaclass=JSONRPCServerType): if old_txo.claim.is_stream: claim.stream.update(file_path=file_path, **kwargs) + elif old_txo.claim.is_repost: + claim.repost.update(**kwargs) if clear_channel: claim.clear_signature() diff --git a/tests/integration/claims/test_claim_commands.py b/tests/integration/claims/test_claim_commands.py index a9d5a1a22..9fa239a42 100644 --- a/tests/integration/claims/test_claim_commands.py +++ b/tests/integration/claims/test_claim_commands.py @@ -1455,17 +1455,31 @@ class StreamCommands(ClaimTestCase): self.assertItemCount(await self.daemon.jsonrpc_txo_list(reposted_claim_id=claim_id), 0) self.assertItemCount(await self.daemon.jsonrpc_txo_list(type='repost'), 0) - tx = await self.stream_repost(claim_id, 'newstuff-again', '1.1', channel_name='@spam') + tx = await self.stream_repost( + claim_id, 'newstuff-again', '1.1', channel_name='@spam', + title="repost title", description="repost desc", tags=["tag1", "tag2"] + ) repost_id = self.get_claim_id(tx) # test inflating reposted channels works repost_url = f'newstuff-again:{repost_id}' self.ledger._tx_cache.clear() - self.assertEqual( - goodies_claim_id, - (await self.out(self.daemon.jsonrpc_resolve(repost_url)) - )[repost_url]['reposted_claim']['signing_channel']['claim_id'] + repost_resolve = await self.out(self.daemon.jsonrpc_resolve(repost_url)) + repost = repost_resolve[repost_url] + self.assertEqual(goodies_claim_id, repost['reposted_claim']['signing_channel']['claim_id']) + self.assertEqual("repost title", repost["value"]["title"]) + self.assertEqual("repost desc", repost["value"]["description"]) + self.assertEqual(["tag1", "tag2"], repost["value"]["tags"]) + + await self.stream_update( + repost_id, title="title 2", description="desc 2", tags=["tag3"] ) + repost_resolve = await self.out(self.daemon.jsonrpc_resolve(repost_url)) + repost = repost_resolve[repost_url] + self.assertEqual(goodies_claim_id, repost['reposted_claim']['signing_channel']['claim_id']) + self.assertEqual("title 2", repost["value"]["title"]) + self.assertEqual("desc 2", repost["value"]["description"]) + self.assertEqual(["tag1", "tag2", "tag3"], repost["value"]["tags"]) self.assertItemCount(await self.daemon.jsonrpc_claim_list(claim_type='repost'), 1) self.assertEqual((await self.claim_search(name='newstuff'))[0]['meta']['reposted'], 1)