-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFlowLauncher.py
55 lines (41 loc) · 1.35 KB
/
FlowLauncher.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
import inspect
import sys
import demjson
class FlowLauncher:
"""
Flow.Launcher python plugin base
"""
def __init__(self):
# defalut jsonrpc
self.rpc_request = {'method': 'query', 'parameters': ['']}
if len(sys.argv) > 1: # from input to get jsonrpc
self.rpc_request = demjson.decode(sys.argv[1])
# proxy is not working now
# self.proxy = self.rpc_request.get("proxy", {})
request_method_name = self.rpc_request.get("method", "query")
request_parameters = self.rpc_request.get("parameters", [])
methods = inspect.getmembers(self, predicate=inspect.ismethod)
request_method = dict(methods)[request_method_name]
results = request_method(*request_parameters)
if request_method_name in ("query", "context_menu"):
response = {"result": results}
else:
response = results
print(demjson.encode(response))
def query(self, param: str = '') -> list:
"""
sub class need to override this method
"""
return []
def context_menu(self, data) -> list:
"""
optional context menu entries for a result
"""
return []
def debug(self, msg: str):
"""
alert msg
"""
print(f"DEBUG:{msg}")
sys.exit()