Florin Barbu 7f91bd7b95
Filter Subscribe (#6)
* Filter Subscribe

* set min_relay_peers_to_publish for filter tests

* address review comments
2023-12-11 14:02:50 +02:00

56 lines
2.2 KiB
Python

from src.libs.custom_logger import get_custom_logger
import json
from dataclasses import asdict
from src.node.api_clients.base_client import BaseClient
logger = get_custom_logger(__name__)
class RPC(BaseClient):
def __init__(self, rpc_port, image_name):
self._image_name = image_name
self._rpc_port = rpc_port
def rpc_call(self, endpoint, params=[]):
url = f"http://127.0.0.1:{self._rpc_port}"
headers = {"Content-Type": "application/json"}
payload = {"jsonrpc": "2.0", "method": endpoint, "params": params, "id": 1}
return self.make_request("post", url, headers=headers, data=json.dumps(payload))
def info(self):
info_response = self.rpc_call("get_waku_v2_debug_v1_info", [])
return info_response.json()["result"]
def set_relay_subscriptions(self, pubsub_topics):
if "nwaku" in self._image_name:
return self.rpc_call("post_waku_v2_relay_v1_subscriptions", [pubsub_topics])
else:
return self.rpc_call("post_waku_v2_relay_v1_subscription", [pubsub_topics])
def delete_relay_subscriptions(self, pubsub_topics):
if "nwaku" in self._image_name:
return self.rpc_call("delete_waku_v2_relay_v1_subscriptions", [pubsub_topics])
else:
return self.rpc_call("delete_waku_v2_relay_v1_subscription", [pubsub_topics])
def send_relay_message(self, message, pubsub_topic):
return self.rpc_call("post_waku_v2_relay_v1_message", [pubsub_topic, message])
def get_relay_messages(self, pubsub_topic):
get_messages_response = self.rpc_call("get_waku_v2_relay_v1_messages", [pubsub_topic])
return get_messages_response.json()["result"]
def set_filter_subscriptions(self, subscription):
set_subscriptions_response = self.rpc_call(
"post_waku_v2_filter_v1_subscription",
[
subscription.get("contentFilters", []),
subscription.get("pubsubTopic", None),
],
)
return set_subscriptions_response.json()["result"]
def get_filter_messages(self, content_topic):
get_messages_response = self.rpc_call("get_waku_v2_filter_v1_messages", [content_topic])
return get_messages_response.json()["result"]