import requests
import os
from dotenv import load_dotenv
import logging

# Cargar las variables de entorno
load_dotenv()

# Configurar los logs
logging.basicConfig(level=logging.DEBUG)  # Cambia a WARNING o INFO en producción
logger = logging.getLogger(__name__)

# Cargar las claves desde el archivo .env
headers = {
    "X-RapidAPI-Key": os.getenv('RAPIDAPI_KEY'),
    "X-RapidAPI-Host": os.getenv('RAPIDAPI_HOST')
}


def getProductReviews(asin, page, country, star_rating, sort_by):
    querystring = {
        "asin": asin,
        "page": page,
        "country": country,
        "star_rating": star_rating,
        "sort_by": sort_by
    }

    try:
        logger.info(f"Fetching product reviews for ASIN: {asin}, page: {page}, star_rating: {star_rating}")
        response = requests.get(os.getenv('URL_AMAZON') + '/product-reviews', headers=headers, params=querystring)

        # Verificar si la respuesta fue exitosa
        if response.status_code == 200:
            logger.info("Successfully fetched reviews.")
            return response.json()  # Devuelve la respuesta en formato JSON
        else:
            logger.error(f"Error fetching reviews. Status code: {response.status_code}")
            logger.error(f"Response: {response.text}")
            return None

    except Exception as e:
        logger.error(f"Ocurrió un error inesperado al obtener las reseñas: {e}")
        return None


def getProductsByText(keyword):
    querystring = {
        "query": keyword
    }
    try:
        logger.info(f"Fetching products for keyword: {keyword}")
        response = requests.get(os.getenv('URL_AMAZON') + '/search', headers=headers, params=querystring)

        if response.status_code == 200:
            logger.info("Successfully fetched products.")
            return response.json()  # Devuelve la respuesta en formato JSON
        else:
            logger.error(f"Error fetching products. Status code: {response.status_code}")
            logger.error(f"Response: {response.text}")
            return None
    except Exception as e:
        logger.error(f"Ocurrió un error inesperado al buscar productos: {e}")
        return None


def getProductDetails(asin, country):
    querystring = {
        "asin": asin,
        "country": country,
    }
    try:
        logger.info(f"Fetching product details for ASIN: {asin}, country: {country}")
        response = requests.get(os.getenv('URL_AMAZON') + '/product-details', headers=headers, params=querystring)

        if response.status_code == 200:
            logger.info("Successfully fetched product details.")
            return response.json()  # Devuelve la respuesta en formato JSON
        else:
            logger.error(f"Error fetching product details. Status code: {response.status_code}")
            logger.error(f"Response: {response.text}")
            return None
    except Exception as e:
        logger.error(f"Ocurrió un error inesperado al obtener los detalles del producto: {e}")
        return None


