OILS / regtest / cause-server.py View on Github | oils.pub

41 lines, 33 significant
1#!/usr/bin/env python3
2import http.server
3import subprocess
4import urllib.parse
5import os
6
7# Read token from environment variable
8AUTH_TOKEN = os.environ.get('CAUSES_AUTH_TOKEN')
9
10class Handler(http.server.BaseHTTPRequestHandler):
11 def do_GET(self):
12
13 parsed = urllib.parse.urlparse(self.path)
14 params = urllib.parse.parse_qs(parsed.query)
15 kind = params.get('kind', [''])[0]
16 token = params.get('token', [''])[0]
17 if token != AUTH_TOKEN:
18 self.send_response(401)
19 self.end_headers()
20 self.wfile.write(b'Unauthorized')
21 return
22
23 result = subprocess.run(['./regtest/aports-update-causes.sh', 'update-latest', kind],
24 capture_output=True,
25 text=True)
26 print(result.stderr)
27 print("stdout:")
28 print(result.stdout)
29 if(result.returncode == 0):
30 self.send_response(200)
31 self.end_headers()
32 self.wfile.write(f'View the new report at: {result.stdout}'.encode())
33 else:
34 self.send_response(500)
35 self.end_headers()
36 self.wfile.write(f'error occured, exit code: {result.returncode}'.encode())
37
38 def log_message(self, format, *args):
39 pass
40
41http.server.HTTPServer(('', 8080), Handler).serve_forever()