#!/usr/bin/env python3
from functools import partial
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
import os
import ssl


ROOT = os.environ.get("HAPP_SUB_ROOT", "/srv/happ-subscription")
BIND = os.environ.get("HAPP_HTTPS_BIND", "127.0.0.1")
PORT = int(os.environ.get("HAPP_HTTPS_PORT", "8445"))
CERT = os.environ.get("HAPP_TLS_CERT", "/etc/letsencrypt/live/s1.ptiz.org/fullchain.pem")
KEY = os.environ.get("HAPP_TLS_KEY", "/etc/letsencrypt/live/s1.ptiz.org/privkey.pem")


class Handler(SimpleHTTPRequestHandler):
    def guess_type(self, path):
        name = os.path.basename(path)
        if name == "ru.max.api.v1.Messenger":
            return "application/json; charset=utf-8"
        if name == "1138b776dab0b8646b":
            return "text/plain; charset=utf-8"
        return super().guess_type(path)


def main():
    handler = partial(Handler, directory=ROOT)
    server = ThreadingHTTPServer((BIND, PORT), handler)
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    context.load_cert_chain(certfile=CERT, keyfile=KEY)
    server.socket = context.wrap_socket(server.socket, server_side=True)
    server.serve_forever()


if __name__ == "__main__":
    main()
