from flask import Flask, request
import os
import requests

app = Flask(__name__)

def enviar_json(ruta_archivo_xml):
    # Convertir ruta XML a ruta JSON
    ruta_archivo_json = ruta_archivo_xml.replace("xml", "json")
    ruta_archivo_json = os.path.join("json", ruta_archivo_json)

    # Verificar si el archivo existe
    if not os.path.exists(ruta_archivo_json):
        return f"El archivo no existe: {ruta_archivo_json}"

    # Leer el contenido del archivo JSON
    try:
        with open(ruta_archivo_json, "r", encoding="utf-8") as f:
            contenido_json = f.read()
    except Exception as e:
        return f"No se pudo leer el archivo: {ruta_archivo_json}. Error: {e}"

    # Preparar los datos para enviar
    post_data = {
        'test': 0,
        'file': os.path.basename(ruta_archivo_json),
        'json': contenido_json
    }

    # URL de destino
    url = 'http://10.11.200.153/ghot/booking_notification_ots'

    try:
        response = requests.post(url, data=post_data, timeout=30)
        http_code = response.status_code
        response_text = response.text.strip()
    except Exception as e:
        return f"Error al enviar archivo: {e}"

    # Verificar respuesta
    if http_code == 200 and response_text == "1":
        archivo_xml = os.path.basename(ruta_archivo_json).replace("json", "xml")
        return f"Reserva reprocesada correctamente: {archivo_xml}"
    else:
        return f"Error al enviar archivo. Código HTTP: {http_code}. Respuesta: {response_text}"

@app.route("/enviar", methods=["GET"])
def enviar_endpoint():
    ruta = request.args.get("ruta")
    if not ruta:
        return "Parámetro 'ruta' no proporcionado.", 400

    resultado = enviar_json(ruta)
    return resultado

if __name__ == "__main__":
    # Para desarrollo, correr en localhost
    app.run(host="0.0.0.0", port=5000, debug=True)
