class ChannelStateSchema(BaseSchema): channel_identifier = IntegerToStringField(attribute="identifier") token_network_address = AddressField() token_address = AddressField() partner_address = fields.Method("get_partner_address") settle_timeout = IntegerToStringField() reveal_timeout = IntegerToStringField() balance = fields.Method("get_balance") state = fields.Method("get_state") total_deposit = fields.Method("get_total_deposit") total_withdraw = fields.Method("get_total_withdraw") @staticmethod def get_partner_address(channel_state: NettingChannelState) -> str: return to_checksum_address(channel_state.partner_state.address) @staticmethod def get_balance(channel_state: NettingChannelState) -> str: return str(channel.get_balance(channel_state.our_state, channel_state.partner_state)) @staticmethod def get_state(channel_state: NettingChannelState) -> str: return channel.get_status(channel_state).value @staticmethod def get_total_deposit(channel_state: NettingChannelState) -> str: """Return our total deposit in the contract for this channel""" return str(channel_state.our_total_deposit) @staticmethod def get_total_withdraw(channel_state: NettingChannelState) -> str: """Return our total withdraw from this channel""" return str(channel_state.our_total_withdraw)
class RaidenEventsRequestSchema(BaseSchema): limit = IntegerToStringField(missing=None) offset = IntegerToStringField(missing=None) class Meta: strict = True # decoding to a dict is required by the @use_kwargs decorator from webargs decoding_class = dict
class BlockchainEventsRequestSchema(BaseSchema): from_block = IntegerToStringField(missing=None) to_block = IntegerToStringField(missing=None) class Meta: strict = True # decoding to a dict is required by the @use_kwargs decorator from webargs decoding_class = dict
class PaymentSchema(BaseSchema): initiator_address = AddressField(missing=None) target_address = AddressField(missing=None) token_address = AddressField(missing=None) amount = IntegerToStringField(required=True) identifier = IntegerToStringField(missing=None) secret = SecretField(missing=None) secret_hash = SecretHashField(missing=None) lock_timeout = IntegerToStringField(missing=None)
class ConnectionsConnectSchema(BaseSchema): funds = IntegerToStringField(required=True) initial_channel_target = IntegerToStringField( missing=DEFAULT_INITIAL_CHANNEL_TARGET) joinable_funds_target = fields.Decimal( missing=DEFAULT_JOINABLE_FUNDS_TARGET) class Meta: strict = True decoding_class = dict
class ChannelPutSchema(BaseSchema): token_address = AddressField(required=True) partner_address = AddressField(required=True) reveal_timeout = IntegerToStringField(missing=None) settle_timeout = IntegerToStringField(missing=None) total_deposit = IntegerToStringField(default=None, missing=None) class Meta: strict = True # decoding to a dict is required by the @use_kwargs decorator from webargs: decoding_class = dict
class EventPaymentSchema(BaseSchema): block_number = IntegerToStringField() identifier = IntegerToStringField() log_time = TimeStampField() token_address = AddressField(missing=None) def serialize(self, chain_state: ChainState, event: TimestampedEvent) -> Dict[str, Any]: serialized_event = self.dump(event) token_network = get_token_network_by_address( chain_state=chain_state, token_network_address=event.wrapped_event.token_network_address, ) assert token_network, "Token network object should be registered if we got events with it" serialized_event["token_address"] = to_checksum_address(token_network.token_address) return serialized_event
class ChannelPatchSchema(BaseSchema): total_deposit = IntegerToStringField(default=None, missing=None) total_withdraw = IntegerToStringField(default=None, missing=None) reveal_timeout = IntegerToStringField(default=None, missing=None) state = fields.String( default=None, missing=None, validate=validate.OneOf( [ ChannelState.STATE_CLOSED.value, ChannelState.STATE_OPENED.value, ChannelState.STATE_SETTLED.value, ] ), )
class MintTokenSchema(BaseSchema): to = AddressField(required=True) value = IntegerToStringField(required=True, validate=validate.Range(min=1, max=UINT256_MAX)) class Meta: strict = True decoding_class = dict
class ChannelPatchSchema(BaseSchema): total_deposit = IntegerToStringField(default=None, missing=None) total_withdraw = IntegerToStringField(default=None, missing=None) reveal_timeout = IntegerToStringField(default=None, missing=None) state = fields.String( default=None, missing=None, validate=validate.OneOf([ ChannelState.STATE_CLOSED.value, ChannelState.STATE_OPENED.value, ChannelState.STATE_SETTLED.value, ]), ) class Meta: strict = True # decoding to a dict is required by the @use_kwargs decorator from webargs: decoding_class = dict
def test_deserialize_raises_validation_error_on_dict(): for field in [ IntegerToStringField(), OptionalIntegerToStringField(), BytesField(), AddressField(), QueueIdentifierField(), ]: with pytest.raises(marshmallow.exceptions.ValidationError): field._deserialize({}, None, None)
class MintTokenSchema(BaseSchema): to = AddressField(required=True) value = IntegerToStringField(required=True, validate=validate.Range(min=1, max=UINT256_MAX)) contract_method = fields.String(validate=validate.OneOf( choices=("increaseSupply", "mint", "mintFor"))) class Meta: strict = True decoding_class = dict
class EventPaymentReceivedSuccessSchema(EventPaymentSchema): event = fields.Constant("EventPaymentReceivedSuccess") amount = IntegerToStringField() initiator = AddressField() class Meta: fields = ( "block_number", "event", "amount", "initiator", "identifier", "log_time", "token_address", )
class EventPaymentSentSuccessSchema(EventPaymentSchema): event = fields.Constant("EventPaymentSentSuccess") amount = IntegerToStringField() target = AddressField() class Meta: fields = ( "block_number", "event", "amount", "target", "identifier", "log_time", "token_address", ) strict = True decoding_class = dict
class ChannelPutSchema(BaseSchema): token_address = AddressField(required=True) partner_address = AddressField(required=True) reveal_timeout = IntegerToStringField(missing=None) settle_timeout = IntegerToStringField(missing=None) total_deposit = IntegerToStringField(default=None, missing=None)
class BlockchainEventsRequestSchema(BaseSchema): from_block = IntegerToStringField(missing=None) to_block = IntegerToStringField(missing=None)
class RaidenEventsRequestSchema(BaseSchema): limit = IntegerToStringField(missing=None) offset = IntegerToStringField(missing=None)