def on_get(self, req, resp, network_id=None):
        resp.status = falcon.HTTP_200

        # TODO make caching more generic for custom resources

        cache_key = '{}-{}'.format(req.method, req.url)
        console_handler = logging.StreamHandler()
        console_handler.setLevel('INFO')
        logger = logging.getLogger('yee')
        logger.setLevel('INFO')
        logger.addHandler(console_handler)
        # logger.info(cache_key)

        response = self.cache_region.get(cache_key, self.cache_expiration_time)

        if response is NO_VALUE:
            substrate01 = SubstrateInterface(SHARDS_TABLE['shard.0'])
            substrate02 = SubstrateInterface(SHARDS_TABLE['shard.1'])
            substrate03 = SubstrateInterface(SHARDS_TABLE['shard.2'])
            substrate04 = SubstrateInterface(SHARDS_TABLE['shard.3'])

            shard01 = substrate01.get_block_header(None)
            shard01['finalizedNum'] = substrate01.get_block_number(
                substrate01.get_chain_finalised_head())
            shard02 = substrate02.get_block_header(None)
            shard02['finalizedNum'] = substrate02.get_block_number(
                substrate02.get_chain_finalised_head())
            shard03 = substrate03.get_block_header(None)
            shard03['finalizedNum'] = substrate03.get_block_number(
                substrate03.get_chain_finalised_head())
            shard04 = substrate04.get_block_header(None)
            shard04['finalizedNum'] = substrate04.get_block_number(
                substrate04.get_chain_finalised_head())
            response = self.get_jsonapi_response(data={
                'type': 'FinalizedHeadList',
                'attributes': {
                    'shard01': shard01,
                    'shard02': shard02,
                    'shard03': shard03,
                    'shard04': shard04
                }
            }, )

            self.cache_region.set(cache_key, response)
            resp.set_header('X-Cache', 'MISS')
        else:
            resp.set_header('X-Cache', 'HIT')

        resp.media = response
    def on_get(self, req, resp):

        substrate = SubstrateInterface(SUBSTRATE_RPC_URL)

        # Get Parent hash
        json_block = substrate.get_block_header(req.params.get('block_hash'))

        # Get metadata
        metadata_decoder = substrate.get_block_metadata(json_block['parentHash'])

        # Get events for block hash
        events_decoder = substrate.get_block_events(req.params.get('block_hash'), metadata_decoder=metadata_decoder)

        resp.status = falcon.HTTP_201
        resp.media = {'events': events_decoder.value, 'runtime': substrate.get_block_runtime_version(req.params.get('block_hash'))}
예제 #3
0
    def on_get(self, req, resp):

        substrate = SubstrateInterface(
            url=SUBSTRATE_RPC_URL, runtime_config=RuntimeConfiguration(), type_registry_preset=settings.TYPE_REGISTRY
        )

        # Get Parent hash
        json_block = substrate.get_block_header(req.params.get('block_hash'))

        # Get metadata
        metadata_decoder = substrate.get_block_metadata(json_block['parentHash'])

        # Get events for block hash
        events_decoder = substrate.get_block_events(req.params.get('block_hash'), metadata_decoder=metadata_decoder)

        resp.status = falcon.HTTP_201
        resp.media = {'events': events_decoder.value, 'runtime': substrate.get_block_runtime_version(req.params.get('block_hash'))}