48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
import imp
|
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
|
|
codepath = '/userfunc/user'
|
|
userfunc = None
|
|
|
|
#
|
|
# Request context that's passed to user functions
|
|
#
|
|
class Context:
|
|
def __init__(self, handler):
|
|
self.handler = handler
|
|
|
|
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
|
|
def do_POST(self):
|
|
global userfunc
|
|
userfunc = (imp.load_source('user', codepath)).main
|
|
self.send_response(200)
|
|
self.end_headers()
|
|
self.wfile.write(bytes("ok\n", "utf8"))
|
|
return
|
|
|
|
# GET
|
|
def do_GET(self):
|
|
global userfunc
|
|
try:
|
|
print("GET request")
|
|
ctx = Context(self)
|
|
message = userfunc(ctx)
|
|
self.send_response(200)
|
|
self.end_headers()
|
|
self.wfile.write(bytes(message, "utf8"))
|
|
return
|
|
except:
|
|
self.send_response(500)
|
|
self.end_headers()
|
|
|
|
def run():
|
|
print('starting server...')
|
|
server_address = ('0.0.0.0', 8888)
|
|
httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
|
|
httpd.serve_forever()
|
|
|
|
|
|
run()
|