forked from LBRYCommunity/lbry-sdk
fixed --preview mode on stream_create/update
This commit is contained in:
parent
539ea04039
commit
f3c8776878
3 changed files with 31 additions and 12 deletions
|
@ -35,10 +35,7 @@ async def execute_command(conf, method, params, callback=display):
|
||||||
if 'result' in data:
|
if 'result' in data:
|
||||||
return callback(data['result'])
|
return callback(data['result'])
|
||||||
elif 'error' in data:
|
elif 'error' in data:
|
||||||
if 'message' in data['error']:
|
return callback(data['error'])
|
||||||
return callback(data['error']['message'])
|
|
||||||
else:
|
|
||||||
return callback(data['error'])
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.exception('Could not process response from server:', exc_info=e)
|
log.exception('Could not process response from server:', exc_info=e)
|
||||||
except aiohttp.ClientConnectionError:
|
except aiohttp.ClientConnectionError:
|
||||||
|
|
|
@ -199,7 +199,7 @@ class JSONRPCError:
|
||||||
self.data = {} if data is None else data
|
self.data = {} if data is None else data
|
||||||
self.traceback = []
|
self.traceback = []
|
||||||
if traceback is not None:
|
if traceback is not None:
|
||||||
trace_lines = traceback.split("\n")
|
self.traceback = trace_lines = traceback.split("\n")
|
||||||
for i, t in enumerate(trace_lines):
|
for i, t in enumerate(trace_lines):
|
||||||
if "--- <exception caught here> ---" in t:
|
if "--- <exception caught here> ---" in t:
|
||||||
if len(trace_lines) > i + 1:
|
if len(trace_lines) > i + 1:
|
||||||
|
@ -451,8 +451,17 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
if 'wallet' in self.component_manager.get_components_status():
|
if 'wallet' in self.component_manager.get_components_status():
|
||||||
# self.ledger only available if wallet component is not skipped
|
# self.ledger only available if wallet component is not skipped
|
||||||
ledger = self.ledger
|
ledger = self.ledger
|
||||||
|
try:
|
||||||
|
encoded_result = jsonrpc_dumps_pretty(
|
||||||
|
result, ledger=ledger, include_protobuf=include_protobuf)
|
||||||
|
except:
|
||||||
|
log.exception('Failed to encode JSON RPC result:')
|
||||||
|
encoded_result = jsonrpc_dumps_pretty(JSONRPCError(
|
||||||
|
'After successfully executing the command, failed to encode result for JSON RPC response.',
|
||||||
|
JSONRPCError.CODE_APPLICATION_ERROR, format_exc()
|
||||||
|
), ledger=ledger)
|
||||||
return web.Response(
|
return web.Response(
|
||||||
text=jsonrpc_dumps_pretty(result, ledger=ledger, include_protobuf=include_protobuf),
|
text=encoded_result,
|
||||||
content_type='application/json'
|
content_type='application/json'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2321,13 +2330,17 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
)
|
)
|
||||||
new_txo = tx.outputs[0]
|
new_txo = tx.outputs[0]
|
||||||
|
|
||||||
|
file_stream = None
|
||||||
if not preview:
|
if not preview:
|
||||||
file_stream = await self.stream_manager.create_stream(file_path)
|
file_stream = await self.stream_manager.create_stream(file_path)
|
||||||
claim.stream.source.sd_hash = file_stream.sd_hash
|
claim.stream.source.sd_hash = file_stream.sd_hash
|
||||||
new_txo.script.generate()
|
new_txo.script.generate()
|
||||||
if channel:
|
|
||||||
new_txo.sign(channel)
|
if channel:
|
||||||
await tx.sign([account])
|
new_txo.sign(channel)
|
||||||
|
await tx.sign([account])
|
||||||
|
|
||||||
|
if not preview:
|
||||||
await account.ledger.broadcast(tx)
|
await account.ledger.broadcast(tx)
|
||||||
await self.storage.save_claims([self._old_get_temp_claim_info(
|
await self.storage.save_claims([self._old_get_temp_claim_info(
|
||||||
tx, new_txo, claim_address, claim, name, dewies_to_lbc(amount)
|
tx, new_txo, claim_address, claim, name, dewies_to_lbc(amount)
|
||||||
|
@ -2500,6 +2513,7 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
)
|
)
|
||||||
new_txo = tx.outputs[0]
|
new_txo = tx.outputs[0]
|
||||||
|
|
||||||
|
stream_hash = None
|
||||||
if not preview:
|
if not preview:
|
||||||
old_stream_hash = await self.storage.get_stream_hash_for_sd_hash(old_txo.claim.stream.source.sd_hash)
|
old_stream_hash = await self.storage.get_stream_hash_for_sd_hash(old_txo.claim.stream.source.sd_hash)
|
||||||
if file_path is not None:
|
if file_path is not None:
|
||||||
|
@ -2512,9 +2526,12 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
stream_hash = file_stream.stream_hash
|
stream_hash = file_stream.stream_hash
|
||||||
else:
|
else:
|
||||||
stream_hash = old_stream_hash
|
stream_hash = old_stream_hash
|
||||||
if channel:
|
|
||||||
new_txo.sign(channel)
|
if channel:
|
||||||
await tx.sign([account])
|
new_txo.sign(channel)
|
||||||
|
await tx.sign([account])
|
||||||
|
|
||||||
|
if not preview:
|
||||||
await account.ledger.broadcast(tx)
|
await account.ledger.broadcast(tx)
|
||||||
await self.storage.save_claims([self._old_get_temp_claim_info(
|
await self.storage.save_claims([self._old_get_temp_claim_info(
|
||||||
tx, new_txo, claim_address, new_txo.claim, new_txo.claim_name, dewies_to_lbc(amount)
|
tx, new_txo, claim_address, new_txo.claim, new_txo.claim_name, dewies_to_lbc(amount)
|
||||||
|
|
|
@ -280,6 +280,11 @@ class StreamCommands(CommandTestCase):
|
||||||
'hovercraft5', '0.1', channel_name='@baz', channel_account_id=[account1_id]
|
'hovercraft5', '0.1', channel_name='@baz', channel_account_id=[account1_id]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def test_preview_works_with_signed_streams(self):
|
||||||
|
await self.out(self.channel_create('@spam', '1.0'))
|
||||||
|
signed = await self.out(self.stream_create('bar', '1.0', channel_name='@spam', preview=True, confirm=False))
|
||||||
|
self.assertTrue(signed['outputs'][0]['is_channel_signature_valid'])
|
||||||
|
|
||||||
async def test_publish_updates_file_list(self):
|
async def test_publish_updates_file_list(self):
|
||||||
tx = await self.out(self.stream_create(title='created'))
|
tx = await self.out(self.stream_create(title='created'))
|
||||||
txo = tx['outputs'][0]
|
txo = tx['outputs'][0]
|
||||||
|
|
Loading…
Reference in a new issue