from django.http import JsonResponse

from decouple import config

API_KEY = config('SERPER_KEY')

from ninja import NinjaAPI, Schema
import requests
import json

api = NinjaAPI()

class QuerySchema(Schema):
    q: str
    location: str = "France"
    gl: str = "fr"
    hl: str = "fr"

@api.post("/scholar")
def get_scholar_results(request, query: QuerySchema):
    url = "https://google.serper.dev/scholar"
    payload = json.dumps(query.dict())
    headers = {
        'X-API-KEY': API_KEY,
        'Content-Type': 'application/json'
    }

    try:
        response = requests.post(url, headers=headers, data=payload)
        response.raise_for_status()  # Lève une exception pour les réponses 4xx/5xx
        return JsonResponse(response.json(), safe=False)
    except requests.RequestException as e:
        return JsonResponse({'error': 'Failed to fetch data', 'message': str(e)}, status=500)