MCPcopy Create free account
hub / github.com/NyarchLinux/DesktopPuppet / InteractionHandler

Class InteractionHandler

src/interaction_handler.py:5–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3import threading
4
5class InteractionHandler(BaseHTTPRequestHandler):
6
7 def do_GET(self):
8 if self.path == '/expressions':
9 expressions = self.server.interaction_server.get_expressions()
10 response = json.dumps(expressions).encode('utf-8')
11
12 self.send_response(200)
13 self.send_header("Content-Type", "application/json")
14 self.send_header("Content-Length", str(len(response)))
15 self.end_headers()
16 self.wfile.write(response)
17 elif self.path == '/motions':
18 motions = self.server.interaction_server.get_motions()
19 response = json.dumps(motions).encode('utf-8')
20
21 self.send_response(200)
22 self.send_header("Content-Type", "application/json")
23 self.send_header("Content-Length", str(len(response)))
24 self.end_headers()
25 self.wfile.write(response)
26 else:
27 self.send_response(404)
28 self.end_headers()
29
30 def do_POST(self):
31 # Read the request body.
32 content_length = int(self.headers.get('Content-Length', 0))
33 post_data = self.rfile.read(content_length)
34 try:
35 data = json.loads(post_data)
36 except json.JSONDecodeError:
37 self.send_response(400)
38 self.end_headers()
39 self.wfile.write(b"Invalid JSON")
40 return
41
42 # Route POST requests based on the URL path.
43 if self.path == '/expression':
44 expr = data.get('expression')
45 print("Expression", expr)
46 if expr is None:
47 self.send_response(400)
48 self.end_headers()
49 self.wfile.write(b'Missing "expression" field')
50 return
51 self.server.interaction_server.set_expression(expr)
52 self.send_response(200)
53 self.end_headers()
54
55 if self.path == '/motion':
56 expr = data.get('motion')
57 print("Motion", expr)
58 if expr is None:
59 self.send_response(400)
60 self.end_headers()
61 self.wfile.write(b'Missing "motion" field')
62 return

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected