plugins/clnrest: removing notifications queue in favor of websocket server

This commit is contained in:
Shahana Farooqui 2023-07-15 00:22:14 -07:00 committed by Rusty Russell
parent 2ab0b4af3e
commit 5e3ffc468b
3 changed files with 1 additions and 32 deletions

View file

@ -26,9 +26,6 @@ If `rest-port` is not specified, the plugin will disable itself.
With the default configurations, the Swagger user interface will be available at https://127.0.0.1:3010/. The POST method requires `rune` and `nodeid` headers for authorization.
### cURL
Example curl command for GET:
`curl -k https://127.0.0.1:3010/v1/notifications`
Example curl command for POST will also require `rune` and `nodeid` headers like below:
`curl -k -X POST 'https://127.0.0.1:3010/v1/getinfo' -H 'Rune: <node-rune>' -H 'Nodeid: <node-id>'`

View file

@ -1,23 +1,9 @@
import os
import sys
from multiprocessing import Manager
from pyln.client import Plugin
plugin = Plugin(autopatch=False)
manager = Manager()
queue = manager.Queue()
plugin.add_option(name="rest-certs", default=os.getcwd(), description="Path for certificates (for https)", opt_type="string", deprecated=False)
plugin.add_option(name="rest-protocol", default="https", description="REST server protocol", opt_type="string", deprecated=False)
plugin.add_option(name="rest-host", default="127.0.0.1", description="REST server host", opt_type="string", deprecated=False)
plugin.add_option(name="rest-port", default=None, description="REST server port to listen", opt_type="int", deprecated=False)
@plugin.subscribe("*")
def on_any_notification(request, **kwargs):
plugin.log("Notification: {}".format(kwargs), "debug")
if request.method == 'shutdown':
# A plugin which subscribes to shutdown is expected to exit itself.
sys.exit(0)
else:
queue.put(str(kwargs) + "\n")

View file

@ -1,5 +1,5 @@
import json5
from flask import request, make_response, Response, stream_with_context
from flask import request, make_response
from flask_restx import Namespace, Resource
from .shared import call_rpc_method, verify_rune, process_help_response
from .rpc_plugin import plugin
@ -56,17 +56,3 @@ class RpcMethodResource(Resource):
except Exception as err:
plugin.log(f"Error: {err}", "error")
return json5.loads(str(err)), 500
@rpcns.route("/notifications")
class NotificationsResource(Resource):
def get(self):
try:
def notifications_stream():
while True:
from .rpc_plugin import queue
yield queue.get()
return Response(stream_with_context(notifications_stream()), mimetype="text/event-stream")
except Exception as err:
return json5.loads(str(err)), 500