from http.server import HTTPServer, SimpleHTTPRequestHandler
import requests
import sys
import socketserver
import urllib3

# Wyłączamy ostrzeżenia o braku weryfikacji SSL (żeby nie śmieciło w logach)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# Port
PORT = 5555

# Adres docelowy - ZMIENIONY NA ARRIVALS!
TARGET_URL = "https://mtr.ciapongi.szablix.pl/mtr/api/map/arrivals?dimension=0"

class CORSRequestHandler(SimpleHTTPRequestHandler):
    def do_OPTIONS(self):
        self.send_response(200)
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
        self.send_header("Access-Control-Allow-Headers", "Content-Type")
        self.end_headers()

    def do_POST(self):
        if self.path == '/api/departures':
            try:
                content_length = int(self.headers['Content-Length'])
                post_data = self.rfile.read(content_length)
                
                print(f"[*] Wysyłam zapytanie do MTR Arrivals...")

                resp = requests.post(
                    TARGET_URL, 
                    data=post_data,
                    headers={
                        'Content-Type': 'application/json',
                        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                    },
                    timeout=30,
                    verify=False
                )
                
                self.send_response(resp.status_code)
                self.send_header('Content-type', 'application/json')
                self.send_header('Access-Control-Allow-Origin', '*')
                self.end_headers()
                self.wfile.write(resp.content)
                
                print(f"[*] Sukces! MTR odpowiedział w {resp.elapsed.total_seconds()}s")

            except Exception as e:
                print(f"[!!!] BŁĄD: {e}")
                self.send_response(500)
                self.send_header('Access-Control-Allow-Origin', '*')
                self.end_headers()
                error_msg = f'{{"error": "Proxy Timeout/Error: {str(e)}"}}'
                self.wfile.write(error_msg.encode('utf-8'))
        else:
            self.send_error(404)

if __name__ == "__main__":
    socketserver.TCPServer.allow_reuse_address = True
    print(f"Serwer Proxy startuje na porcie {PORT}...")
    httpd = HTTPServer(('0.0.0.0', PORT), CORSRequestHandler)

    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
