def post_addresses_transactions(addresses_hash):
    # Start must be declared None, in case that start doesn't
    # exist in the post body
    start = None

    if not check_if_address_post_key_is_valid(addresses_hash):
        return "Bad post request", 400

    addresses_hash_no_json = addresses_hash['addresses']

    for address_hash in addresses_hash_no_json:
        if not validate_address(address_hash):
            return "Invalid address hash", 400

    if 'start' in addresses_hash:
        start = addresses_hash['start']
        if start and (not isinstance(start, int)):
            return "Start too large", 400

    trs = db.post_addresses_transactions(addresses_hash_no_json,
                                         start,
                                         limit=50)

    if len(trs) == 50:
        last_transaction = trs[len(trs) - 1]
        return {
            "transactions": [TransactionSerializer.to_web(tr) for tr in trs],
            "next": last_transaction['blocktime']
        }
    else:
        return {
            "transactions": [TransactionSerializer.to_web(tr) for tr in trs],
            "next": None
        }
示例#2
0
def get_transaction_by_txid(txid):
    if not validate_sha256_hash(txid):
        return "Invalid transaction ID", 400
    try:
        return TransactionSerializer.to_web(db.get_transaction_by_txid(txid))
    except KeyError:
        return "Transaction with given ID not found", 404
示例#3
0
def get_transactions_by_blockhash(blockhash):
    if not validate_sha256_hash(blockhash):
        return "Invalid block hash", 400
    try:
        return [
            TransactionSerializer.to_web(tr)
            for tr in db.get_transactions_by_blockhash(blockhash)
        ]
    except KeyError:
        return []
示例#4
0
def get_address_transactions(address_hash, start=None):
    if start and (not isinstance(start, int)):
        return "Start too large", 400
    if not validate_address(address_hash):
        return "Invalid address hash", 400
    trs = db.get_address_transactions(address_hash, start, limit=51)

    if len(trs) == 51:
        last_transaction = trs[len(trs) - 1]
        return {
            "transactions": [TransactionSerializer.to_web(tr) for tr in trs],
            "next":
            "/addresses/%s?start=%s" %
            (address_hash, last_transaction['blocktime'])
        }
    else:
        return {
            "transactions": [TransactionSerializer.to_web(tr) for tr in trs],
            "next": None
        }
示例#5
0
def get_latest_transactions(limit, offset):
    if not isinstance(offset, int):
        return "Offset too large", 400
    transactions = db.get_latest_transactions(limit, offset)
    return [TransactionSerializer.to_web(tr) for tr in transactions]