Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, Query, Response | |
import requests | |
import json | |
app = FastAPI() | |
async def get_eatc_headers(eatc_code: str = Query(..., description="EATC code to retrieve headers for")): | |
url = f"https://donantes.eatcloud.info/api/abaco/eatc_dona_headers?eatc-code={eatc_code}" | |
response = requests.get(url) | |
if response.status_code == 200: | |
response_json = json.loads(response.text) | |
if len(response_json) >= 2 and "res" in response_json and response_json["res"]: | |
eatc_code_value = response_json["res"][0]["eatc-code"] | |
eatc_match_asignation_rule_value = response_json["res"][0].get("eatc_match_asignation_rule", "") | |
eatc_state_value = response_json["res"][0].get("eatc-state", "") | |
eatc_extended_value = response_json["res"][0].get("eatc_extended", "") | |
eatc_pod_id_value = response_json["res"][0].get("eatc-pod_id", "") | |
# Realizar la segunda consulta | |
second_url = f"https://datagov.eatcloud.info/api/eatcloud/eatc_direct_dona?eatc_pod_id={eatc_pod_id_value}" | |
second_response = requests.get(second_url) | |
eatc_asignacion_directa = "SI" if second_response.status_code == 200 else "NO" | |
# Realizar la tercera consulta | |
third_url = f"https://beneficiarios.eatcloud.info/api/abaco/eatc_match_registry?eatc-dona_header_code={eatc_code_value}" | |
third_response = requests.get(third_url) | |
third_response_json = json.loads(third_response.text) | |
eatc_match_cantidad = len(third_response_json) | |
report = f"eatc_code: {eatc_code_value}\n\neatc_match_asignation_rule: {eatc_match_asignation_rule_value}\n\neatc_state: {eatc_state_value}\n\neatc_extended: {eatc_extended_value}\n\neatc_pod_id: {eatc_pod_id_value}\n\neatc_asignacion_directa: {eatc_asignacion_directa}\n\neatc_match_cantidad: {eatc_match_cantidad}\n\n" | |
return Response(content=report, media_type="text/plain") | |
else: | |
return Response(content="Error: Invalid response from API", media_type="text/plain", status_code=400) | |
else: | |
return Response(content="Error: API returned error status code", media_type="text/plain", status_code=400) |