#!/usr/bin/env python3
"""
MedicoIA local server - serves HTML and proxies OpenAI TTS
Run: python server.py
"""
import http.server
import json
import urllib.request
import urllib.error
import os

OPENAI_KEY = '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'
PORT = 8080

class Handler(http.server.SimpleHTTPRequestHandler):
    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, Authorization')
        super().end_headers()

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

    def do_POST(self):
        if self.path == '/tts':
            content_len = int(self.headers.get('Content-Length', 0))
            body = self.rfile.read(content_len)
            data = json.loads(body)

            # Call OpenAI TTS
            payload = json.dumps({
                'model': 'tts-1',
                'voice': 'nova',
                'input': data.get('text', ''),
                'response_format': 'pcm',
                'speed': 0.95
            }).encode()

            req = urllib.request.Request(
                'https://api.openai.com/v1/audio/speech',
                data=payload,
                headers={
                    'Content-Type': 'application/json',
                    'Authorization': f'Bearer {OPENAI_KEY}'
                }
            )

            try:
                with urllib.request.urlopen(req) as resp:
                    audio_data = resp.read()
                self.send_response(200)
                self.send_header('Content-Type', 'audio/pcm')
                self.send_header('Content-Length', str(len(audio_data)))
                self.end_headers()
                self.wfile.write(audio_data)
            except urllib.error.HTTPError as e:
                error_body = e.read()
                print(f'OpenAI error {e.code}: {error_body}')
                self.send_response(e.code)
                self.send_header('Content-Type', 'application/json')
                self.end_headers()
                self.wfile.write(error_body)
        else:
            self.send_response(404)
            self.end_headers()

    def log_message(self, format, *args):
        print(f'{self.address_string()} - {format % args}')

if __name__ == '__main__':
    os.chdir(os.path.dirname(os.path.abspath(__file__)))
    server = http.server.HTTPServer(('', PORT), Handler)
    print(f'MedicoIA server running at http://localhost:{PORT}')
    print(f'Open: http://localhost:{PORT}/ai_doctor_simli_v4.html')
    server.serve_forever()
