mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-22 00:24:19 +01:00
plugins/clnrest: removing notifications queue in favor of websocket server
This commit is contained in:
committed by
Rusty Russell
parent
2ab0b4af3e
commit
5e3ffc468b
@@ -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.
|
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
|
### 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:
|
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>'`
|
`curl -k -X POST 'https://127.0.0.1:3010/v1/getinfo' -H 'Rune: <node-rune>' -H 'Nodeid: <node-id>'`
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,9 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
from multiprocessing import Manager
|
|
||||||
from pyln.client import Plugin
|
from pyln.client import Plugin
|
||||||
|
|
||||||
plugin = Plugin(autopatch=False)
|
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-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-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-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.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")
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import json5
|
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 flask_restx import Namespace, Resource
|
||||||
from .shared import call_rpc_method, verify_rune, process_help_response
|
from .shared import call_rpc_method, verify_rune, process_help_response
|
||||||
from .rpc_plugin import plugin
|
from .rpc_plugin import plugin
|
||||||
@@ -56,17 +56,3 @@ class RpcMethodResource(Resource):
|
|||||||
except Exception as err:
|
except Exception as err:
|
||||||
plugin.log(f"Error: {err}", "error")
|
plugin.log(f"Error: {err}", "error")
|
||||||
return json5.loads(str(err)), 500
|
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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user