mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-12-29 01:55:45 +01:00
151bc47583
This allows plugins to choose how to present things in getmanifest. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Added: plugins: `getmanifest` may now include "allow-deprecated-apis" boolean flag. Changelog-Deprecated: plugins: `getmanifest` without any parameters; plugins should accept any parameters for future use.
59 lines
1.2 KiB
Python
Executable File
59 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""An example plugin that fails to answer to `getmanifest`
|
|
|
|
Used to test the `getmanifest` timeout.
|
|
"""
|
|
import json
|
|
import sys
|
|
import time
|
|
|
|
|
|
def json_getmanifest(request, **kwargs):
|
|
# Timeout is 60 seconds, so wait more
|
|
time.sleep(61)
|
|
return {
|
|
"options": [
|
|
],
|
|
"rpcmethods": [
|
|
]
|
|
}
|
|
|
|
|
|
methods = {
|
|
'getmanifest': json_getmanifest,
|
|
}
|
|
|
|
|
|
partial = ""
|
|
for l in sys.stdin:
|
|
try:
|
|
partial += l
|
|
request = json.loads(partial)
|
|
except Exception:
|
|
continue
|
|
|
|
result = None
|
|
method = methods[request['method']]
|
|
params = request['params']
|
|
try:
|
|
if isinstance(params, dict):
|
|
result = method(request, **params)
|
|
else:
|
|
result = method(request, *params)
|
|
result = {
|
|
"jsonrpc": "2.0",
|
|
"result": result,
|
|
"id": request['id']
|
|
}
|
|
except Exception:
|
|
result = {
|
|
"jsonrpc": "2.0",
|
|
"error": "Error while processing {}".format(request['method']),
|
|
"id": request['id']
|
|
}
|
|
|
|
json.dump(result, fp=sys.stdout)
|
|
sys.stdout.write('\n')
|
|
sys.stdout.flush()
|
|
partial = ""
|