-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhttpgethandler.py
More file actions
93 lines (76 loc) · 2.83 KB
/
httpgethandler.py
File metadata and controls
93 lines (76 loc) · 2.83 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from array import array
from http.server import BaseHTTPRequestHandler
import json
from mediator import BaseComponent
from mediator import MediatorEvent
class HttpGetHandler(BaseHTTPRequestHandler, BaseComponent):
def debugPrint(self):
print("------------------BEGIN------------------------")
print("Path: ", self.path)
print(self.headers)
# print("Data: ", self.getRequestContent())
print("------------------END--------------------------")
def sendJSON(self, content):
comments = json.loads(content)
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
dump = json.dumps(comments)
self.wfile.write(dump.encode())
def send200(self):
self.send_response(200)
self.end_headers()
self.wfile.write('Test connection'.encode())
def requestHandler(self):
url = self.path
try:
content = self.getRequestContent()
except:
content = None
if url == '/':
self.send200()
if url == '/search':
if not content == None:
jcontent = json.loads(content)
target = jcontent.get('target')
if not len(target) == 0:
self.mediator.notify(
self, MediatorEvent("search_target", target))
else:
self.mediator.notify(
self, MediatorEvent("search_global", ""))
if url == '/query':
if not content == None:
jcontent = json.loads(content)
targets = jcontent.get('targets')
intervalMs = jcontent.get("intervalMs")
self.mediator.notify(self, MediatorEvent(
"query_targets", json.dumps(targets).encode(), intervalMs))
def do_GET(self):
# self.debugPrint()
self.requestHandler()
def do_POST(self):
# self.debugPrint()
self.requestHandler()
def sendSearchResponce(self, rspData: json):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(rspData).encode())
def sendQueryResponce(self, rspData: json):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
jDump = json.dumps(rspData).encode()
self.wfile.write(jDump)
def sendAnnoResponce(self):
print("sendAnnotateResponce")
def getRequestContent(self) -> array:
cl = self.headers.get('Content-Length')
length = 0
if cl != None:
length = int(cl)
if length > 0:
data = self.rfile.read(length)
return data
return array()