#!/usr/bin/env python3
"""
Simple proxy server to handle CORS issues with Energy Charts API
"""
import http.server
import socketserver
import urllib.request
import urllib.parse
import json
from urllib.error import HTTPError

class ProxyHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path.startswith('/api/energy-charts'):
            # Proxy-Request zur Energy Charts API
            try:
                # Original URL rekonstruieren
                original_url = 'https://api.energy-charts.info' + self.path[len('/api/energy-charts'):]
                
                # Request zur Original-API
                req = urllib.request.Request(original_url)
                req.add_header('User-Agent', 'Mozilla/5.0 (compatible; Energy-Data-Proxy/1.0)')
                
                with urllib.request.urlopen(req) as response:
                    data = response.read()
                    
                # CORS-Headers setzen
                self.send_response(200)
                self.send_header('Content-Type', 'application/json')
                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.end_headers()
                
                self.wfile.write(data)
                
            except HTTPError as e:
                self.send_response(e.code)
                self.send_header('Content-Type', 'application/json')
                self.send_header('Access-Control-Allow-Origin', '*')
                self.end_headers()
                error_response = json.dumps({'error': f'API Error: {e.reason}'})
                self.wfile.write(error_response.encode())
                
            except Exception as e:
                self.send_response(500)
                self.send_header('Content-Type', 'application/json')
                self.send_header('Access-Control-Allow-Origin', '*')
                self.end_headers()
                error_response = json.dumps({'error': f'Proxy Error: {str(e)}'})
                self.wfile.write(error_response.encode())
        else:
            # Normale Datei-Requests
            super().do_GET()
    
    def do_OPTIONS(self):
        # Handle preflight requests
        self.send_response(200)
        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.end_headers()

if __name__ == '__main__':
    PORT = 8080
    print(f"Starting proxy server on port {PORT}")
    print(f"Access your page at: http://localhost:{PORT}/aktuelle_Info.html")
    print("API requests will be proxied through /api/energy-charts/")
    
    with socketserver.TCPServer(("", PORT), ProxyHandler) as httpd:
        httpd.serve_forever()