예제 #1
0
 def get_channel_events_raiden(
         self,
         token_address: typing.TokenAddress,
         partner_address: typing.Address = None,
         from_block: typing.BlockSpecification = None,
         to_block: typing.BlockSpecification = None,
 ):
     log.debug(
         'Getting channel internal events',
         token_address=to_checksum_address(token_address),
         partner_address=optional_address_to_string(partner_address),
         from_block=from_block,
         to_block=to_block,
     )
     try:
         raiden_service_result = self.raiden_api.get_channel_events_raiden(
             token_address,
             partner_address,
             from_block,
             to_block,
         )
         raiden_service_result = convert_to_serializable(raiden_service_result)
         return api_response(result=normalize_events_list(raiden_service_result))
     except InvalidAddress as e:
         return api_error(str(e), status_code=HTTPStatus.CONFLICT)
예제 #2
0
 def get_channel_events_blockchain(
         self,
         token_address: typing.TokenAddress,
         partner_address: typing.Address = None,
         from_block: typing.BlockSpecification = None,
         to_block: typing.BlockSpecification = None,
 ):
     log.debug(
         'Getting channel blockchain events',
         token_address=to_checksum_address(token_address),
         partner_address=optional_address_to_string(partner_address),
         from_block=from_block,
         to_block=to_block,
     )
     try:
         raiden_service_result = self.raiden_api.get_channel_events_blockchain(
             token_address,
             partner_address,
             from_block,
             to_block,
         )
         return api_response(result=normalize_events_list(raiden_service_result))
     except (InvalidBlockNumberInput, InvalidAddress) as e:
         return api_error(str(e), status_code=HTTPStatus.CONFLICT)
     except UnknownTokenAddress as e:
         return api_error(str(e), status_code=HTTPStatus.NOT_FOUND)
예제 #3
0
파일: rest.py 프로젝트: realflash7/raiden
    def get_raiden_events_payment_history_with_timestamps(
        self,
        token_address: typing.TokenAddress = None,
        target_address: typing.Address = None,
        limit: int = None,
        offset: int = None,
    ):
        log.debug(
            'Getting payment history',
            node=pex(self.raiden_api.address),
            token_address=optional_address_to_string(token_address),
            target_address=optional_address_to_string(target_address),
            limit=limit,
            offset=offset,
        )
        try:
            service_result = self.raiden_api.get_raiden_events_payment_history_with_timestamps(
                token_address=token_address,
                target_address=target_address,
                limit=limit,
                offset=offset,
            )
        except (InvalidNumberInput, InvalidAddress) as e:
            return api_error(str(e), status_code=HTTPStatus.CONFLICT)

        result = []
        for event in service_result:
            if isinstance(event.wrapped_event, EventPaymentSentSuccess):
                serialized_event = self.sent_success_payment_schema.dump(event)
            elif isinstance(event.wrapped_event, EventPaymentSentFailed):
                serialized_event = self.failed_payment_schema.dump(event)
            elif isinstance(event.wrapped_event, EventPaymentReceivedSuccess):
                serialized_event = self.received_success_payment_schema.dump(
                    event)
            else:
                log.warning(
                    'Unexpected event',
                    node=pex(self.raiden_api.address),
                    unexpected_event=event.wrapped_event,
                )

            result.append(serialized_event.data)
        return api_response(result=result)
예제 #4
0
    def get_payment_history(
            self,
            token_address: typing.TokenAddress = None,
            target_address: typing.Address = None,
    ):
        log.debug(
            'Getting payment history',
            token_address=optional_address_to_string(token_address),
            target_address=optional_address_to_string(target_address),
        )
        try:
            if token_address is None and target_address is None:
                raiden_service_result = self.raiden_api.get_payment_history()
            elif target_address is None:
                raiden_service_result = self.raiden_api.get_payment_history_for_token(
                    token_address,
                )
            else:
                raiden_service_result = self.raiden_api.get_payment_history_for_token_and_target(
                    token_address,
                    target_address,
                )
        except (InvalidBlockNumberInput, InvalidAddress) as e:
            return api_error(str(e), status_code=HTTPStatus.CONFLICT)

        result = []
        for block_number, evt in raiden_service_result:
            evt.block_number = block_number
            name = type(evt).__name__
            evt.event = name
            if name == 'EventPaymentSentSuccess':
                event = self.sent_success_payment_schema.dump(evt)
            elif name == 'EventPaymentSentFailed':
                event = self.failed_payment_schema.dump(evt)
            elif name == 'EventPaymentReceivedSuccess':
                event = self.received_success_payment_schema.dump(evt)
            else:
                log.warning('Unexpected event', unexpected_event=evt)

            result.append(event.data)

        return api_response(result=result)
예제 #5
0
 def get_channel_list(
     self,
     registry_address: typing.PaymentNetworkID,
     token_address: typing.TokenAddress = None,
     partner_address: typing.Address = None,
 ):
     log.debug(
         "Getting channel list",
         node=pex(self.raiden_api.address),
         registry_address=to_checksum_address(registry_address),
         token_address=optional_address_to_string(token_address),
         partner_address=optional_address_to_string(partner_address),
     )
     raiden_service_result = self.raiden_api.get_channel_list(
         registry_address, token_address, partner_address)
     assert isinstance(raiden_service_result, list)
     result = [
         self.channel_schema.dump(channel_schema).data
         for channel_schema in raiden_service_result
     ]
     return api_response(result=result)