update over existing claim in publish()
This commit is contained in:
parent
dfa68f126b
commit
b0e14fae43
3 changed files with 28 additions and 35 deletions
|
@ -396,19 +396,27 @@ class LBRYWallet(object):
|
|||
d.addCallback(_get_id_for_return)
|
||||
return d
|
||||
|
||||
def get_claim_info(self, name, force_good_metadata=True):
|
||||
log.info("get claim info")
|
||||
log.info(name)
|
||||
log.info(force_good_metadata)
|
||||
def get_claim_info(self, name, force_good_metadata=True, is_mine=False):
|
||||
def _filter_my_claims(claim):
|
||||
d = self.get_name_claims()
|
||||
d.addCallback(lambda my_claims: claim if claim['txid'] in [c['txid'] for c in my_claims] else False)
|
||||
return d
|
||||
|
||||
d = self._get_value_for_name(name)
|
||||
d.addCallback(lambda r: self._get_claim_info(r, name, force_good_metadata))
|
||||
d.addErrback(lambda _: False)
|
||||
if is_mine:
|
||||
d.addCallback(lambda claim: _filter_my_claims(claim) if claim is not False else False)
|
||||
return d
|
||||
|
||||
def claim_name(self, name, bid, m):
|
||||
|
||||
metadata = Metadata(m)
|
||||
|
||||
d = self._send_name_claim(name, json.dumps(metadata), bid)
|
||||
def _make_update(old_claim_info):
|
||||
txid = old_claim_info['txid']
|
||||
log.info("Updating from claim tx %s" % txid)
|
||||
r = old_claim_info['value'] if isinstance(old_claim_info['value'], dict) else {}
|
||||
for k in metadata:
|
||||
r[k] = metadata[k]
|
||||
return self.update_name(name, txid, json.dumps(Metadata(r)), bid)
|
||||
|
||||
def _save_metadata(txid):
|
||||
log.info("Saving metadata for claim %s" % txid)
|
||||
|
@ -416,6 +424,10 @@ class LBRYWallet(object):
|
|||
d.addCallback(lambda _: txid)
|
||||
return d
|
||||
|
||||
metadata = Metadata(m)
|
||||
|
||||
d = self.get_claim_info(name, force_good_metadata=False, is_mine=True)
|
||||
d.addCallback(lambda r: _make_update(r) if r else self._send_name_claim(name, json.dumps(metadata), bid))
|
||||
d.addCallback(_save_metadata)
|
||||
return d
|
||||
|
||||
|
@ -577,10 +589,8 @@ class LBRYWallet(object):
|
|||
return self.db.runInteraction(create_tables)
|
||||
|
||||
def _save_name_metadata(self, name, txid, sd_hash):
|
||||
d = self.db.runQuery("select * from name_metadata where name=? and txid=? and sd_hash=?", (name, txid, sd_hash))
|
||||
d.addCallback(lambda r: self.db.runQuery("insert into name_metadata values (?, ?, ?)", (name, txid, sd_hash))
|
||||
if not len(r) else None)
|
||||
|
||||
d = self.db.runQuery("delete from name_metadata where name=? and txid=? and sd_hash=?", (name, txid, sd_hash))
|
||||
d.addCallback(lambda _: self.db.runQuery("insert into name_metadata values (?, ?, ?)", (name, txid, sd_hash)))
|
||||
return d
|
||||
|
||||
def _get_claim_metadata_for_sd_hash(self, sd_hash):
|
||||
|
@ -596,7 +606,7 @@ class LBRYWallet(object):
|
|||
|
||||
def _get_claimid_for_tx(self, name, txid):
|
||||
d = self.db.runQuery("select claimId from claim_ids where name=? and txid=?", (name, txid))
|
||||
d.addCallback(lambda r: None if not r else r[0][0])
|
||||
d.addCallback(lambda r: r[0][0] if r else None)
|
||||
return d
|
||||
|
||||
######### Must be overridden #########
|
||||
|
|
|
@ -379,6 +379,7 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
log.info("Done writing lbrycrd.conf")
|
||||
|
||||
def _responseFailed(self, err, call):
|
||||
log.error(err.getTraceback())
|
||||
call.cancel()
|
||||
|
||||
def render(self, request):
|
||||
|
@ -2010,12 +2011,6 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
metadata['fee'][currency]['address'] = address
|
||||
return defer.succeed(None)
|
||||
|
||||
def _delete_data(lbry_file):
|
||||
txid = lbry_file.txid
|
||||
d = self._delete_lbry_file(lbry_file, delete_file=False)
|
||||
d.addCallback(lambda _: txid)
|
||||
return d
|
||||
|
||||
if not self.pending_claim_checker.running:
|
||||
self.pending_claim_checker.start(30)
|
||||
|
||||
|
@ -2031,9 +2026,7 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
d.addCallback(lambda addr: _set_address(addr, c))
|
||||
|
||||
pub = Publisher(self.session, self.lbry_file_manager, self.session.wallet)
|
||||
d.addCallback(lambda _: self._get_lbry_file_by_uri(name))
|
||||
d.addCallbacks(lambda l: None if not l else _delete_data(l), lambda _: None)
|
||||
d.addCallback(lambda r: pub.start(name, file_path, bid, metadata, r))
|
||||
d.addCallback(lambda _: pub.start(name, file_path, bid, metadata))
|
||||
d.addCallback(lambda txid: self._add_to_pending_claims(name, txid))
|
||||
d.addCallback(lambda r: self._render_response(r, OK_CODE))
|
||||
d.addErrback(lambda err: self._render_response(err.getTraceback(), BAD_REQUEST))
|
||||
|
|
|
@ -43,7 +43,7 @@ class Publisher(object):
|
|||
self.stream_hash = None
|
||||
self.metadata = {}
|
||||
|
||||
def start(self, name, file_path, bid, metadata, old_txid):
|
||||
def start(self, name, file_path, bid, metadata):
|
||||
|
||||
def _show_result():
|
||||
log.info("Published %s --> lbry://%s txid: %s", self.file_name, self.publish_name, self.txid)
|
||||
|
@ -53,7 +53,6 @@ class Publisher(object):
|
|||
self.file_path = file_path
|
||||
self.bid_amount = bid
|
||||
self.metadata = metadata
|
||||
self.old_txid = old_txid
|
||||
|
||||
d = self._check_file_path(self.file_path)
|
||||
d.addCallback(lambda _: create_lbry_file(self.session, self.lbry_file_manager,
|
||||
|
@ -106,21 +105,12 @@ class Publisher(object):
|
|||
self.metadata['content-type'] = mimetypes.guess_type(os.path.join(self.lbry_file.download_directory,
|
||||
self.lbry_file.file_name))[0]
|
||||
self.metadata['ver'] = CURRENT_METADATA_VERSION
|
||||
m = Metadata(self.metadata)
|
||||
|
||||
if self.old_txid:
|
||||
|
||||
d = self.wallet.abandon_name(self.old_txid)
|
||||
d.addCallback(lambda tx: log.info("Abandoned tx %s" % str(tx)))
|
||||
d.addCallback(lambda _: self.wallet.claim_name(self.publish_name,
|
||||
self.bid_amount,
|
||||
Metadata(self.metadata)))
|
||||
else:
|
||||
d = self.wallet.claim_name(self.publish_name,
|
||||
self.bid_amount,
|
||||
Metadata(self.metadata))
|
||||
def set_tx_hash(txid):
|
||||
self.txid = txid
|
||||
|
||||
d = self.wallet.claim_name(self.publish_name, self.bid_amount, m)
|
||||
d.addCallback(set_tx_hash)
|
||||
return d
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue