예제 #1
0
파일: api.py 프로젝트: Arraylab/scanner
    def get(self, tx_hash):
        tx_hash = remove_0x(tx_hash.strip().lower())
        try:
            if not is_hash_prefix(tx_hash):
                raise Exception("Transaction hash is wrong!")

            # TODO return 404 if tx corresponding to tx_hash not found
            return self.manager.handle_tx(tx_hash) if tx_hash else {}
        except Exception as e:
            self.logger.error("TxAPI.get Error: %s" % str(e))
            util.wrap_error_response()
예제 #2
0
파일: api.py 프로젝트: Arraylab/scanner
    def get(self):
        try:
            args = self.parser.parse_args()
            start, end = args.get('start'), args.get('end')
            page = args.get('page')

            # return block in range [start, end)
            if not isinstance(start, int):
                if isinstance(page, int):
                    start = DEFAULT_OFFSET * (page - 1)
                else:
                    start = DEFAULT_START

            if not isinstance(end, int):
                if isinstance(page, int):
                    end = DEFAULT_OFFSET * page
                else:
                    end = DEFAULT_OFFSET

            result = self.manager.list_txs(start, end)
            result['page'] = 1 if not page else int(page)
        except Exception as e:
            self.logger.error("TxListAPI.get Error: %s" % str(e))
            return util.wrap_error_response()

        return util.wrap_response(data=result)
예제 #3
0
파일: api.py 프로젝트: Arraylab/scanner
 def post(self):
     args = self.parser.parse_args()
     info = args.get('q')
     found = self.manager.search(info)
     if not found:
         return util.wrap_error_response(status='failure', code='404')
     return util.wrap_response(status='success', data=found, code='302')
예제 #4
0
파일: api.py 프로젝트: Arraylab/scanner
 def get(self):
     try:
         rank_info = self.manager.handle_rank_address()
         return util.wrap_response(data=rank_info)
     except Exception as e:
         self.logger.error("RankAPI.get Error: %s" % str(e))
         return util.wrap_error_response()
예제 #5
0
    def get(self, address):
        try:
            address = remove_0x(address.strip().lower())
            args = self.parser.parse_args()
            page = args.get('page')

            if not isinstance(page, int) or page <= 0:
                page = 1

            if not valid_addr(address):
                abort(400, message="invalid address")
            # TODO: return 404 when wrong
            return self.manager.handle_address(address, page)
        except Exception, e:
            self.logger.error("BlockAPI.get Error: %s" % str(e))
            util.wrap_error_response()
예제 #6
0
파일: api.py 프로젝트: Arraylab/scanner
    def get(self):
        try:
            result = self.manager.list_node_stats()
        except Exception as e:
            self.logger.error("NodeStatsAPI.get Error: %s" % str(e))
            return util.wrap_error_response()

        return util.wrap_response(data=result)
예제 #7
0
    def get(self, block_id):
        try:
            block_id = remove_0x(block_id.strip().lower())
            result = self.manager.handle_block(block_id)

            if result is None:
                raise Exception('Block NotFound')
        except Exception, e:
            self.logger.error("BlockAPI.get Error: %s" % str(e))
            return util.wrap_error_response()
예제 #8
0
    def get(self, chain_api):
        try:
            if chain_api is None:
                raise Exception("void query info")
            chain_api = chain_api.lower()  # Case-insensitive, BBE compatible
            if chain_api not in self.apis:
                raise Exception("Not a valid chain API")

            result = self.manager.handle_chain_api(chain_api)
            return util.wrap_response(data=result)
        except Exception, e:
            self.logger.error("BytomChainAPI.get Error: %s" % str(e))
            return util.wrap_error_response("无效的Chain API参数")
예제 #9
0
    def get(self):
        try:
            args = self.parser.parse_args()
            page = args.get('page')
            page = 1 if page is None or not isinstance(
                page, int) or page <= 0 else page
            result = self.manager.list_assets(page)
            if len(result) == 0:
                raise Exception("Asset NotFound!")
        except Exception as e:
            self.logger.error("AssetListAPI.get Error: %s" % str(e))
            return util.wrap_error_response()

        return util.wrap_response(data=result)
예제 #10
0
    def get(self):
        try:
            args = self.parser.parse_args()
            page = args.get('page', None) if args is not None else None
            if not isinstance(page, int) or page <= 0:
                page = 1
            start, end = DEFAULT_OFFSET * (page - 1), DEFAULT_OFFSET * page
            result = self.manager.list_blocks(start, end)
            if len(result.get('blocks', [])) == 0:
                raise Exception('Blocks NotFound')

            result['no_page'] = 1 if not page else int(page)
        except Exception, e:
            self.logger.error("BlockListAPI.get Error: %s" % str(e))
            return util.wrap_error_response()
예제 #11
0
    def get(self, tx_api):
        try:
            if tx_api is None:
                raise Exception("void query info")

            args = self.parser.parse_args()
            query = args.get('q', self.apis[0])

            if query not in self.apis:
                raise Exception("Not a valid Tx API")

            result = self.manager.handle_tx_api(tx_api.lower(), query)
            return util.wrap_response(data=result)
        except Exception, e:
            self.logger.error("BytomTxAPI.get Error: %s" % str(e))
            return util.wrap_error_response("无效的Tx API参数")
예제 #12
0
    def get(self, asset_id):
        try:
            asset_id = remove_0x(asset_id.strip().lower())
            args = self.parser.parse_args()
            page = args.get('page')
            tag = args.get('tag')
            page = 1 if page is None or not isinstance(
                page, int) or page <= 0 else page
            tag = 'txs' if tag is None or not isinstance(tag, str) or tag not in [
                'txs', 'balances'] else tag
            result = self.manager.handle_asset(asset_id, page, tag)
            if len(result) == 0:
                raise Exception("Asset NotFound!")

        except Exception as e:
            self.logger.error("AssetAPI.get Error: %s" % str(e))
            return util.wrap_error_response()

        return util.wrap_response(data=result)