Beispiel #1
0
    def __init__(self):
        super(FindTransactionsRequestFilter, self).__init__(
            {
                'addresses':
                (f.Array
                 | f.FilterRepeater(f.Required | Trytes(result_type=Address))
                 | f.Optional(default=[])),
                'approvees':
                (f.Array
                 | f.FilterRepeater(f.Required
                                    | Trytes(result_type=TransactionHash))
                 | f.Optional(default=[])),
                'bundles':
                (f.Array
                 | f.FilterRepeater(f.Required
                                    | Trytes(result_type=TransactionHash))
                 | f.Optional(default=[])),
                'tags':
                (f.Array
                 | f.FilterRepeater(f.Required | Trytes(result_type=Tag))
                 | f.Optional(default=[])),
            },

            # Technically, all of the parameters for this command are
            #   optional, so long as at least one of them is present and not
            #   empty.
            allow_missing_keys=True,
        )
Beispiel #2
0
    def __init__(self):
        super(GetPrivateKeysRequestFilter, self).__init__(
            {
                # Optional Parameters
                'count':
                    f.Type(int) | f.Min(1) | f.Optional(default=1),

                'index':
                    f.Type(int) | f.Min(0) | f.Optional(default=0),

                'securityLevel':
                    f.Type(int)
                    | f.Min(1)
                    | f.Optional(default=AddressGenerator.DEFAULT_SECURITY_LEVEL),

                # Required Parameters
                'seed':
                    f.Required | Trytes(result_type=Seed),
            },

            allow_missing_keys={
                'count',
                'index',
                'securityLevel',
            },
        )
 def __init__(self):
     super(GetNewAddressesRequestFilter, self).__init__(
         {
             # Everything except ``seed`` is optional.
             'checksum':
             f.Type(bool) | f.Optional(default=False),
             'count':
             f.Type(int) | f.Min(1),
             'index':
             f.Type(int) | f.Min(0) | f.Optional(default=0),
             'securityLevel':
             f.Type(int)
             | f.Min(1)
             | f.Max(self.MAX_SECURITY_LEVEL)
             | f.Optional(default=AddressGenerator.DEFAULT_SECURITY_LEVEL),
             'seed':
             f.Required | Trytes(result_type=Seed),
         },
         allow_missing_keys={
             'checksum',
             'count',
             'index',
             'securityLevel',
         },
     )
Beispiel #4
0
 def __init__(self) -> None:
     super(FindTransactionsResponseFilter, self).__init__({
         'hashes':
         f.FilterRepeater(
             f.ByteString(encoding='ascii') | Trytes(TransactionHash))
         | f.Optional(default=[]),
     })
Beispiel #5
0
  def __init__(self):
    super(GetInclusionStatesRequestFilter, self).__init__(
      {
        # Required parameters.
        'transactions': (
            f.Required
          | f.Array
          | f.FilterRepeater(
                f.Required
              | Trytes(result_type=TransactionHash)
              | f.Unicode(encoding='ascii', normalize=False)
            )
        ),

        # Optional parameters.
        'tips': (
            f.Array
          | f.FilterRepeater(
                f.Required
              | Trytes(result_type=TransactionHash)
              | f.Unicode(encoding='ascii', normalize=False)
            )
          | f.Optional(default=[])
        ),
      },

      allow_missing_keys = {
        'tips',
      },
    )
Beispiel #6
0
    def __init__(self) -> None:
        super(GetAccountDataRequestFilter, self).__init__(
            {
                # Required parameters.
                'seed': f.Required | Trytes(Seed),

                # Optional parameters.
                'stop': f.Type(int) | f.Min(0),
                'start': f.Type(int) | f.Min(0) | f.Optional(0),
                'inclusionStates': f.Type(bool) | f.Optional(False),
                'security_level': SecurityLevel
            },
            allow_missing_keys={
                'stop', 'start', 'inclusionStates', 'security_level'
            },
        )
Beispiel #7
0
    def __init__(self) -> None:
        super(GetDigestsRequestFilter, self).__init__(
            {
                # Optional Parameters
                'count': f.Type(int) | f.Min(1) | f.Optional(default=1),
                'index': f.Type(int) | f.Min(0) | f.Optional(default=0),
                'securityLevel': SecurityLevel,

                # Required Parameters
                'seed': f.Required | Trytes(Seed),
            },
            allow_missing_keys={
                'count',
                'index',
                'securityLevel',
            },
        )
    def __init__(self):
        super(GetAccountDataRequestFilter, self).__init__(
            {
                # Required parameters.
                'seed': f.Required | Trytes(result_type=Seed),

                # Optional parameters.
                'stop': f.Type(int) | f.Min(0),
                'start': f.Type(int) | f.Min(0) | f.Optional(0),
                'inclusionStates': f.Type(bool) | f.Optional(False),
            },
            allow_missing_keys={
                'stop',
                'inclusionStates',
                'start',
            },
        )
Beispiel #9
0
    def __init__(self) -> None:
        super(GetTransfersRequestFilter, self).__init__(
            {
                # Required parameters.
                'seed': f.Required | Trytes(Seed),

                # Optional parameters.
                'stop': f.Type(int) | f.Min(0),
                'start': f.Type(int) | f.Min(0) | f.Optional(0),
                'inclusionStates': f.Type(bool) | f.Optional(False),
            },
            allow_missing_keys={
                'stop',
                'inclusionStates',
                'start',
            },
        )
Beispiel #10
0
 def __init__(self):
     super(GetNewAddressesRequestFilter, self).__init__(
         {
             # Everything except ``seed`` is optional.
             'checksum': f.Type(bool) | f.Optional(default=False),
             'count': f.Type(int) | f.Min(1),
             'index': f.Type(int) | f.Min(0) | f.Optional(default=0),
             'securityLevel': SecurityLevel,
             'seed': f.Required | Trytes(Seed),
         },
         allow_missing_keys={
             'checksum',
             'count',
             'index',
             'securityLevel',
         },
     )
Beispiel #11
0
def SecurityLevel():
    """
    Generates a filter chain for validating a security level.

    :return:
        :py:class:`filters.FilterChain` object.
    """
    return (f.Type(int) | f.Min(1) | f.Max(3)
            | f.Optional(default=AddressGenerator.DEFAULT_SECURITY_LEVEL))
Beispiel #12
0
 def __init__(self):
     super(GetNewAddressesRequestFilter, self).__init__(
         {
             # ``count`` and ``index`` are optional.
             'count': f.Type(int) | f.Min(1),
             'index': f.Type(int) | f.Min(0) | f.Optional(default=0),
             'seed': f.Required | Trytes(result_type=Seed),
         },
         allow_missing_keys={
             'count',
             'index',
         },
     )
Beispiel #13
0
 def __init__(self):
     super(GetBalancesRequestFilter, self).__init__(
         {
             'addresses':
             f.Required | f.Array | f.FilterRepeater(
                 f.Required | AddressNoChecksum()
                 | f.Unicode(encoding='ascii', normalize=False), ),
             'threshold':
             f.Type(int) | f.Min(0) | f.Max(100) | f.Optional(default=100),
         },
         allow_missing_keys={
             'threshold',
         },
     )
Beispiel #14
0
    def _run(self, context):
        # type: (TaskContext) -> Optional[Mapping]
        params =\
            context.filter_kwargs({
                'retries': {
                    'max':
                            f.Type(int)
                        |   f.Optional(default=self.max_retries)
                        |   f.Min(1),
                },
            })

        if self.request.retries < params['retries']['max']:
            raise self.retry()

        return {'count': self.request.retries}
Beispiel #15
0
    def __init__(self):
        super(GetInputsRequestFilter, self).__init__(
            {
                # These arguments are optional.
                'stop': f.Type(int) | f.Min(0),
                'start': f.Type(int) | f.Min(0) | f.Optional(0),
                'threshold': f.Type(int) | f.Min(0),

                # These arguments are required.
                'seed': f.Required | Trytes(result_type=Seed),
            },
            allow_missing_keys={
                'stop',
                'start',
                'threshold',
            })
Beispiel #16
0
 def __init__(self):
     super(GetBalancesRequestFilter, self).__init__(
         {
             'addresses':
             (f.Required
              | f.Array
              | f.FilterRepeater(f.Required | Trytes(result_type=Address))),
             'threshold': (f.Type(int)
                           | f.Min(0)
                           | f.Max(100)
                           | f.Optional(default=100)),
         },
         allow_missing_keys={
             'threshold',
         },
     )
Beispiel #17
0
    def __init__(self) -> None:
        super(GetInclusionStatesRequestFilter, self).__init__(
            {
                # Required parameters.
                'transactions':
                StringifiedTrytesArray(TransactionHash) | f.Required,

                # Optional parameters.
                'tips':
                StringifiedTrytesArray(TransactionHash)
                | f.Optional(default=[]),
            },
            allow_missing_keys={
                'tips',
            },
        )
Beispiel #18
0
    def filter_kwargs(self, filters):
        # type: (Dict[Text, Dict[Text, f.FilterCompatible]]) -> Dict[Text, dict]
        """
        Extracts and filters values from the trigger kwargs.

        :param filters:
            Keys are the names of triggers to extract params from.
            Values are dicts used to configure FilterMapper instances.

            Note: The FilterMapper instances are configured with:
            - ``allow_missing_keys = True``
            - ``allow_extra_keys = True``

        Example::

           task_params =
             context.filter_kwargs({
               't_createApplicant': {
                 'eflId': f.Required | f.ext.Model(Questionnaire),
               },

               'scoring': {
                  'model'; f.Required | f.Unicode,
               },
             })

        :raise:
          - ``ValueError`` if the trigger kwargs fail validation.
        """
        # Configure the inner filters, used to process each value
        # inside ``trigger_kwargs``.
        map_ = {
            item_key: f.Optional(default={}) | f.FilterMapper(filter_map)
            for item_key, filter_map in iteritems(filters)
        }

        filter_ =\
            f.FilterRunner(
                # Configure the outer filter, used to apply the inner
                # filters to the ``trigger_kwargs`` dict.
                starting_filter =
                    f.FilterMapper(
                        filter_map          = map_,
                        allow_missing_keys  = True,
                        allow_extra_keys    = True,
                    ),

                incoming_data = self.trigger_kwargs or {},
            )

        if not filter_.is_valid():
            raise with_context(
                exc=ValueError(
                    'Invalid trigger kwargs: {errors}'.format(
                        errors=filter_.errors, ), ),
                context={
                    'filter_errors': filter_.get_errors(with_context=True),
                },
            )

        return filter_.cleaned_data