class PlomDB:
def __init__(self, db_name):
- self.db_file = db_name + ".json"
- self.lock_file = db_name+ ".lock"
+ self.db_file = db_name
+ self.lock_file = db_name+ '.lock'
if os.path.exists(self.db_file):
- with open(self.db_file, "r") as f:
+ with open(self.db_file, 'r') as f:
self.read_db_file(f)
def lock(self):
class PlomServer(BaseHTTPRequestHandler):
- header = ''
- footer = ''
-
- def run(self, port):
- from http.server import HTTPServer
- webServer = HTTPServer(('localhost', port), type(self))
- print(f"Server started http://localhost:{port}")
- try:
- webServer.serve_forever()
- except KeyboardInterrupt:
- pass
- webServer.server_close()
- print("Server stopped.")
+
+ def __init__(self, *args, **kwargs):
+ self.html_head = ['<!DOCTYPE html>\n<html>\n<meta charset="UTF-8">']
+ self.html_foot = ['</body>\n</html>']
+ self.pre_init()
+ super().__init__(*args, **kwargs)
+
+ def pre_init(self):
+ pass
def fail_400(self, e):
- page = f'{self.header}ERROR: {e}{self.footer}'
- self.send_HTML(page, 400)
+ self.send_HTML(f'ERROR: {e}', 400)
def send_HTML(self, html, code=200):
self.send_code_and_headers(code, [('Content-type', 'text/html')])
- self.wfile.write(bytes(html, "utf-8"))
+ header = '\n'.join(self.html_head)
+ footer = '\n'.join(self.html_foot)
+ self.wfile.write(bytes(f'{header}\n{html}\n{footer}', 'utf-8'))
def send_code_and_headers(self, code, headers=[]):
self.send_response(code)
self.send_header(fieldname, content)
self.end_headers()
+ def redirect(self, url='/'):
+ self.send_code_and_headers(302, [('Location', url)])
+
+
def run_server(port, server_class):
from http.server import HTTPServer