<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
import requests

app = Flask(__name__)
CORS(app, supports_credentials=True)

API_BASE_URL = "http://45.8.150.87:8081"
#API_BASE_URL = "http://127.0.0.1:8000"

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/login', methods=['GET'])
def login():
    clave = request.args.get('clave')
    try:
        # Realizar la solicitud a la API original
        response = requests.get(f"{API_BASE_URL}/login", params={'clave': clave})
        
        # Si la respuesta es 403, devolvemos el error tal cual
        if response.status_code == 403:
            return jsonify({'error': 'Clave incorrecta'}), 403
        
        # Levantar excepciones para otros errores HTTP
        response.raise_for_status()
        
        # Si la respuesta fue exitosa, procesamos las cookies
        data = response.json()
        flask_response = jsonify({"success": True})

        # Extraer cookies de la respuesta original
        if 'set-cookie' in response.headers:
            cookies = response.headers.get('set-cookie')
            flask_response.headers.add('Set-Cookie', cookies)

        return flask_response, 200
    except requests.exceptions.RequestException as e:
        return jsonify({'error': str(e)}), 500

@app.route('/generar_informe', methods=['GET'])
def generar_informe():
    cliente = request.args.get('cliente')  # Obtener el parÃ¡metro cliente
    mes = request.args.get('mes')          # Obtener el parÃ¡metro mes
    anio = request.args.get('anio')        # Obtener el parÃ¡metro aÃ±o
    apiDeivSesion = request.cookies.get('apiDeivSesion')  # Obtener la cookie de sesiÃ³n

    if not apiDeivSesion:
        return jsonify({'error': 'No tienes acceso. Inicia sesiÃ³n primero.'}), 403
    
    # Construir la URL con los parÃ¡metros
    url = f"{API_BASE_URL}/generar_informe"
    params = {'cliente': cliente, 'mes': mes, 'anio': anio}
    print(f"Llamando a URL: {url} con parÃ¡metros {params}")  # Traza de la URL

    try:
        # Hacer la peticiÃ³n GET a la API, pasando los parÃ¡metros y la cookie
        response = requests.get(
            url,
            params=params,
            cookies={'apiDeivSesion': apiDeivSesion}  # Reenviar la cookie
        )
        # Extraer la respuesta como JSON
        content = response.json()
        status_code = response.status_code

        # Log para debugging
        print(f"Respuesta de la API - Estado: {status_code}, Contenido: {content}")
        
        # Devolver el resultado de la API al cliente
        return jsonify(content), status_code
    except requests.exceptions.RequestException as e:
        print(f"Error al conectarse con la API: {e}")
        return jsonify({'error': 'Error al conectarse con la API.'}), 500
    except ValueError:
        return jsonify({'error': 'Respuesta invÃ¡lida de la API.'}), 500

@app.route('/informe_calendario', methods=['GET'])
def informe_calendario():
    cliente = request.args.get('cliente')
    apiDeivSesion = request.cookies.get('apiDeivSesion')  # ObtÃ©n la cookie del navegador
    
    if not apiDeivSesion:
        return jsonify({'error': 'No tienes acceso. Inicia sesiÃ³n primero.'}), 403

    url = f"{API_BASE_URL}/informe_calendario/?cliente={cliente}"
    print(f"Llamando a URL: {url}")  # Traza de la URL
    try:
        response = requests.get(
            url,
            cookies={'apiDeivSesion': apiDeivSesion}  # ReenvÃ­a la cookie al backend principal
        )
        # Extraer el contenido y el estado HTTP de la API original
        content = response.json()  # Parseamos el contenido como JSON
        status_code = response.status_code  # Obtenemos el cÃ³digo de estado
        
        # Mostrar en los logs el estado recibido y el contenido para debug
        print(f"Respuesta de la API - Estado: {status_code}, Contenido: {content}")

        # Devolver exactamente el mensaje y el estado de la API original
        return jsonify(content), status_code
    except requests.exceptions.RequestException as e:
        # En caso de error en la conexiÃ³n con la API, retornar un error genÃ©rico
        print(f"Error al conectarse con la API: {e}")
        return jsonify({'error': 'Error al conectarse con la API.'}), 500
    except ValueError:
        # En caso de que no sea JSON vÃ¡lido, devolver el texto sin formatear
        return jsonify({'error': 'Respuesta invÃ¡lida de la API.'}), 500

if __name__ == '__main__':
    app.run(debug=True, port=5000)
</pre></body></html>