Source code for bitcoinlib.services.bitflyer

# -*- coding: utf-8 -*-
#
#    BitcoinLib - Python Cryptocurrency Library
#    Blocksmurfer client
#    © 2020 Januari - 1200 Web Development <http://1200wd.com/>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU Affero General Public License as
#    published by the Free Software Foundation, either version 3 of the
#    License, or (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU Affero General Public License for more details.
#
#    You should have received a copy of the GNU Affero General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

import logging
from datetime import datetime
from bitcoinlib.services.baseclient import BaseClient, ClientError
from bitcoinlib.transactions import Transaction
from bitcoinlib.keys import Address

PROVIDERNAME = 'bitflyer'


_logger = logging.getLogger(__name__)


[docs] class BitflyerClient(BaseClient): def __init__(self, network, base_url, denominator, *args): super(self.__class__, self).__init__(network, PROVIDERNAME, base_url, denominator, *args)
[docs] def compose_request(self, function, parameter='', parameter2='', method='get'): url_path = function if parameter: url_path += '/' + str(parameter) if parameter2: url_path += '/' + str(parameter2) return self.request(url_path, method=method)
[docs] def getbalance(self, addresslist): balance = 0 for address in addresslist: res = self.compose_request('address', address) balance += res['unconfirmed_balance'] return balance
# def getutxos(self, address, after_txid='', limit=MAX_TRANSACTIONS): # def gettransaction(self, txid, block_count=None): # tx = self.compose_request('tx', txid) # # tx_date = None if not tx.get('received_date') else datetime.strptime(tx['received_date'], # # "%Y-%m-%dT%H:%M:%S.%f") # t = Transaction(locktime=tx['lock_time'], version=tx['version'], network=self.network, # # fee=tx['fees'], size=tx['size'], txid=tx['tx_hash'], date=tx_date, # confirmations=tx['confirmed'], block_height=tx['block_height'], # status='confirmed' if tx['confirmed'] else 'unconfirmed') # for ti in tx['inputs']: # a = Address.parse(ti['address']) # t.add_input(prev_txid=ti['prev_hash'], output_n=ti['prev_index'], unlocking_script=ti['script'], # value=ti['value'], address=ti['address'], sequence=ti['sequence'], # witness_type=a.witness_type, strict=self.strict) # if 'segwit' in [i.witness_type for i in t.inputs] or 'p2sh-segwit' in [i.witness_type for i in t.inputs]: # t.witness_type = 'segwit' # for to in tx['outputs']: # t.add_output(value=to['value'], address=to['address'], lock_script=to['script'], strict=self.strict) # t.update_totals() # return t # def gettransactions(self, address, after_txid='', limit=MAX_TRANSACTIONS): # def getrawtransaction(self, txid): # def sendrawtransaction(self, rawtx): # def estimatefee(self, blocks):
[docs] def blockcount(self): res = self.compose_request('block', 'latest') return res['height']
# def mempool(self, txid): # def getblock(self, blockid, parse_transactions, page, limit): # def getrawblock(self, blockid): # def isspent(self, txid, output_n): # def getinfo(self):