import os
import requests
import requests
import time
from dotenv import load_dotenv

load_dotenv()

ZOHO_CLIENT_ID = os.getenv("ZOHO_CLIENT_ID")
ZOHO_CLIENT_SECRET = os.getenv("ZOHO_CLIENT_SECRET")
ZOHO_REFRESH_TOKEN = os.getenv("ZOHO_REFRESH_TOKEN")
ZOHO_BASE_URL = os.getenv("ZOHO_BASE_URL", "https://www.zohoapis.in")

access_token = None
token_expiry = 0  
def get_access_token():
    global access_token, token_expiry
    if access_token and time.time() < token_expiry:
        return access_token
    
    url = "https://accounts.zoho.in/oauth/v2/token"
    data = {
        "refresh_token": ZOHO_REFRESH_TOKEN,
        "client_id": ZOHO_CLIENT_ID,
        "client_secret": ZOHO_CLIENT_SECRET,
        "grant_type": "refresh_token"
    }
    response = requests.post(url, data=data)
    result = response.json()
    
    if "access_token" in result:
        access_token = result["access_token"]
        token_expiry = time.time() + 3500 
        return access_token
    else:
        print(" Failed to get access token:", result)
        return None

    

def fetch_zoho_data(module_name):
    access_token = get_access_token()
    if not access_token:
        return {"data": [], "error": "Access token not found"}

    headers = {"Authorization": f"Zoho-oauthtoken {access_token}"}
    url = f"{ZOHO_BASE_URL}/crm/v2/{module_name}"
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        return response.json()
    else:
        print(f"Failed to fetch {module_name}: {response.status_code}, {response.text}")
        return {"data": []}
