107 lines
4.3 KiB
Python
107 lines
4.3 KiB
Python
import logging
|
|
from twisted.internet import defer
|
|
from twisted.internet.protocol import ClientFactory
|
|
from client import StratumClientProtocol
|
|
from errors import TransportException
|
|
|
|
log = logging.getLogger()
|
|
|
|
|
|
class StratumClient(ClientFactory):
|
|
protocol = StratumClientProtocol
|
|
|
|
def __init__(self, connected_d=None):
|
|
self.client = None
|
|
self.connected_d = connected_d or defer.Deferred()
|
|
|
|
def buildProtocol(self, addr):
|
|
client = self.protocol()
|
|
client.factory = self
|
|
self.client = client
|
|
self.client._connected.addCallback(lambda _: self.connected_d.callback(self))
|
|
return client
|
|
|
|
def _rpc(self, method, params, *args, **kwargs):
|
|
if not self.client:
|
|
raise TransportException("Not connected")
|
|
|
|
return self.client.rpc(method, params, *args, **kwargs)
|
|
|
|
def blockchain_claimtrie_getvaluesforuris(self, block_hash, *uris):
|
|
return self._rpc('blockchain.claimtrie.getvaluesforuris',
|
|
[block_hash] + list(uris))
|
|
|
|
def blockchain_claimtrie_getvaluesforuri(self, block_hash, uri):
|
|
return self._rpc('blockchain.claimtrie.getvaluesforuri', [block_hash, uri])
|
|
|
|
def blockchain_claimtrie_getclaimssignedbynthtoname(self, name, n):
|
|
return self._rpc('blockchain.claimtrie.getclaimssignedbynthtoname', [name, n])
|
|
|
|
def blockchain_claimtrie_getclaimssignedbyid(self, certificate_id):
|
|
return self._rpc('blockchain.claimtrie.getclaimssignedbyid', [certificate_id])
|
|
|
|
def blockchain_claimtrie_getclaimssignedby(self, name):
|
|
return self._rpc('blockchain.claimtrie.getclaimssignedby', [name])
|
|
|
|
def blockchain_claimtrie_getnthclaimforname(self, name, n):
|
|
return self._rpc('blockchain.claimtrie.getnthclaimforname', [name, n])
|
|
|
|
def blockchain_claimtrie_getclaimsbyids(self, *claim_ids):
|
|
return self._rpc('blockchain.claimtrie.getclaimsbyids', list(claim_ids))
|
|
|
|
def blockchain_claimtrie_getclaimbyid(self, claim_id):
|
|
return self._rpc('blockchain.claimtrie.getclaimbyid', [claim_id])
|
|
|
|
def blockchain_claimtrie_get(self):
|
|
return self._rpc('blockchain.claimtrie.get', [])
|
|
|
|
def blockchain_block_get_block(self, block_hash):
|
|
return self._rpc('blockchain.block.get_block', [block_hash])
|
|
|
|
def blockchain_claimtrie_getclaimsforname(self, name):
|
|
return self._rpc('blockchain.claimtrie.getclaimsforname', [name])
|
|
|
|
def blockchain_claimtrie_getclaimsintx(self, txid):
|
|
return self._rpc('blockchain.claimtrie.getclaimsintx', [txid])
|
|
|
|
def blockchain_claimtrie_getvalue(self, name, block_hash=None):
|
|
return self._rpc('blockchain.claimtrie.getvalue', [name, block_hash])
|
|
|
|
def blockchain_relayfee(self):
|
|
return self._rpc('blockchain.relayfee', [])
|
|
|
|
def blockchain_estimatefee(self):
|
|
return self._rpc('blockchain.estimatefee', [])
|
|
|
|
def blockchain_transaction_get(self, txid):
|
|
return self._rpc('blockchain.transaction.get', [txid])
|
|
|
|
def blockchain_transaction_get_merkle(self, tx_hash, height, cache_only=False):
|
|
return self._rpc('blockchain.transaction.get_merkle', [tx_hash, height, cache_only])
|
|
|
|
def blockchain_transaction_broadcast(self, raw_transaction):
|
|
return self._rpc('blockchain.transaction.broadcast', [raw_transaction])
|
|
|
|
def blockchain_block_get_chunk(self, index, cache_only=False):
|
|
return self._rpc('blockchain.block.get_chunk', [index, cache_only])
|
|
|
|
def blockchain_block_get_header(self, height, cache_only=False):
|
|
return self._rpc('blockchain.block.get_header', [height, cache_only])
|
|
|
|
def blockchain_utxo_get_address(self, txid, pos):
|
|
return self._rpc('blockchain.utxo.get_address', [txid, pos])
|
|
|
|
def blockchain_address_listunspent(self, address):
|
|
return self._rpc('blockchain.address.listunspent', [address])
|
|
|
|
def blockchain_address_get_proof(self, address):
|
|
return self._rpc('blockchain.address.get_proof', [address])
|
|
|
|
def blockchain_address_get_balance(self, address):
|
|
return self._rpc('blockchain.address.get_balance', [address])
|
|
|
|
def blockchain_address_get_mempool(self, address):
|
|
return self._rpc('blockchain.address.get_mempool', [address])
|
|
|
|
def blockchain_address_get_history(self, address):
|
|
return self._rpc('blockchain.address.get_history', [address])
|