예제 #1
0
 def __init__(self, options: Dict[str, Any]) -> None:
     self.options = options
     self.subscription_id = str(uuid.uuid4())
     self.messages = asyncio.Queue(constants.RPC_SUBSCRIBER_MAX_QUEUE_SIZE)
     filters = options.get("filters", None)
     self.filters = filters if filters else ""
     self.validator = filter_parsing.get_validator(self.filters)
예제 #2
0
 async def test_filters4(self):
     t4 = "to = 0x1111111111111111111111111111111111111111 or to = aaaa"
     validator = filter_parsing.get_validator(t4)
     f = {
         "value": 1.3467348e+18,
         "to": "0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be",
         "from": "0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a"
     }
     self.assertFalse(validator(f))
예제 #3
0
 async def test_filters3(self):
     t3 = "value > 5534673480000000000 or (to = 0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be or to = 0xbd4e113ee68bcbbf768ba1d6c7a14e0033629792)"
     validator = filter_parsing.get_validator(t3)
     f = {
         "value": 1.3467348e+18,
         "to": "0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be",
         "from": "0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a"
     }
     self.assertTrue(validator(f))
예제 #4
0
    async def test_filters2(self):
        t2 = "from = 0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a or value > 5534673480000000000"

        f = {"value": 1.3467348e+18, "to": "0xd7bec4d6bf6fc371eb51611a50540f0b59b5f896",
             "from": "0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a"}
        validator = filter_parsing.get_validator(t2)
        self.assertTrue(validator({"value": 6534673480000000000, "from": "a"}))
        self.assertFalse(validator({"value": 50, "from": "a"}))
        self.assertTrue(validator({"value": 50, "from": "0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a"}))
        self.assertTrue(validator(f))
예제 #5
0
 async def test_filters1(self):
     t2 = "value > 5534673480000000000 or from = 0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a"
     validator = filter_parsing.get_validator(t2)
     self.assertTrue(validator({"value": 6534673480000000000, "from": "a"}))
     self.assertFalse(validator({"value": 50, "from": "a"}))
     self.assertTrue(
         validator({
             "value": 50,
             "from": "0xbd4e113ee68bcbbf768ba1d6c7a14e003362979a"
         }))
예제 #6
0
 async def test_filters6(self):
     t6 = "gas_price > 100"
     validator = filter_parsing.get_validator(t6)
     f = {"gas_price": 200}
     self.assertTrue(validator(f))
예제 #7
0
 async def test_filters5(self):
     t5 = "gas_price < 100"
     validator = filter_parsing.get_validator(t5)
     f = {"gas_price": 200}
     self.assertFalse(validator(f))
예제 #8
0
 def validate_filters(self, filters: str) -> Tuple[str, List[str]]:
     filter_parsing.get_validator(filters)
     keys = filter_parsing.get_keys(filters)
     logger.debug("Returning filters {} with keys {}", filters, keys)
     return filters, keys