# import requests
# import json
# from dotenv import load_dotenv
# import os

# load_dotenv()

# API_URL='http://106.245.250.243:8000/api/clients'
# API_KEY='g1XqG9lir4RneLuX01VAob+F0MpVCZTpG2is8UBWLZ0='

# def fetch_clients(api_url, api_key):
#     """
#     Подключаемся к API с использованием заданного X-API-Key
#     """
#     headers = {
#         "X-API-Key": api_key
#     }
#     try:
#         response = requests.get(api_url, headers=headers)
#         response.raise_for_status()
#         return response.json()
#     except requests.exceptions.RequestException as e:
#         print(f"Ошибка при запросе к API: {e}")
#         return None

# if __name__ == '__main__':
#     api_endpoint = f"{os.getenv('API_URL')}"
#     api_key = os.getenv("API_KEY")
    
#     print(api_endpoint, api_key)
#     if not api_endpoint or not api_key:
#         print("Необходимо задать API_URL и API_KEY в .env файле.")
#         exit(1)
        
#     clients = fetch_clients(api_endpoint, api_key)
    
#     if clients is not None:
#         print(json.dumps(clients, indent=4, ensure_ascii=False))
#     else:
#         print("Не удалось получить данные с API.")

import requests
import json
import os
from dotenv import load_dotenv

load_dotenv()

class ApiClient:
    def __init__(self, base_url=None, api_key=None):
        self.base_url = base_url or os.getenv('API_URL', 'http://106.245.250.243:8000/api')
        self.api_key = api_key or os.getenv('API_KEY')
        if not self.api_key:
            raise ValueError("API_KEY не задан ни в .env, ни через параметры конструктора")
        self.headers = {
            "X-API-Key": self.api_key
        }

    def fetch_clients(self):
        """Получение списка клиентов"""
        try:
            url = f"{self.base_url}/clients"
            response = requests.get(url, headers=self.headers)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"Ошибка при получении клиентов: {e}")
            return None

    def fetch_invoices(self, filters=None):
        """Получение списка счетов с возможными фильтрами"""
        try:
            url = f"{self.base_url}/invoices"
            response = requests.get(url, headers=self.headers, params=filters)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"Ошибка при получении счетов: {e}")
            return None

if __name__ == '__main__':
    client = ApiClient()

    print("=== Клиенты ===")
    clients = client.fetch_clients()
    if clients:
        print(json.dumps(clients, indent=4, ensure_ascii=False))
    else:
        print("Не удалось получить клиентов")

    print("\n=== Счета ===")
    filters = {
        "page": 1,
        # "created_at[after]": "2024-12-01T00:00:00",
        # "created_at[before]": "2025-01-01T00:00:00"
    }
    invoices = client.fetch_invoices(filters)
    if invoices:
        print(json.dumps(invoices, indent=4, ensure_ascii=False))
    else:
        print("Не удалось получить счета")
