import http.server
import socketserver
import argparse

from pathlib import Path

BASE_DIR = Path(__file__).parent


class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=str(BASE_DIR), **kwargs)

    def end_headers(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
        self.send_header('Access-Control-Allow-Headers', 'Content-Type')
        self.send_header('Cache-Control', 'no-cache, no-store, must-revalidate')
        super().end_headers()

    def do_OPTIONS(self):
        self.send_response(200)
        self.end_headers()


def main():
    parser = argparse.ArgumentParser(description='HTTP сервер для WebApp QR-сканера')
    parser.add_argument('--port', type=int, default=8000, help='Порт для сервера (по умолчанию: 8000)')
    parser.add_argument('--host', type=str, default='localhost', help='Хост для сервера (по умолчанию: localhost)')
    args = parser.parse_args()

    PORT = args.port
    HOST = args.host

    handler = MyHTTPRequestHandler

    with socketserver.TCPServer((HOST, PORT), handler) as httpd:
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            pass


if __name__ == "__main__":
    main()
