radar-legislativo-lgbtqia-v2.1 / testar_endpoint_senado.py
travahacker
🚀 Deploy inicial: Radar Legislativo LGBTQIA+ - Ensemble Híbrido
3c919fd
raw
history blame
5.02 kB
#!/usr/bin/env python3
"""
Script para testar endpoints do Senado encontrados no Swagger UI
Execute após verificar o Swagger e identificar o endpoint correto
"""
import requests
import json
from typing import Optional
def testar_endpoint_senado(
endpoint: str,
params: dict = None,
headers: dict = None
):
"""
Testa um endpoint do Senado
Args:
endpoint: URL completa do endpoint (ex: https://legis.senado.leg.br/dadosabertos/api/v2/materia/...)
params: Parâmetros da requisição (ex: {"ano": 2024, "sigla": "PLS"})
headers: Headers HTTP (ex: {"Accept": "application/json"})
Returns:
dict: Resposta do servidor
"""
if params is None:
params = {}
if headers is None:
headers = {"Accept": "application/json"}
print(f"🧪 Testando endpoint do Senado...")
print(f"📡 URL: {endpoint}")
print(f"📋 Parâmetros: {params}")
print(f"📋 Headers: {headers}")
print()
try:
response = requests.get(endpoint, params=params, headers=headers, timeout=15)
print(f"✅ Status Code: {response.status_code}")
print(f"📦 Content-Type: {response.headers.get('Content-Type', 'N/A')}")
print()
if response.status_code == 200:
try:
data = response.json()
print(f"✅ Resposta JSON recebida!")
print(f"📊 Estrutura:")
print(f" Tipo: {type(data).__name__}")
if isinstance(data, dict):
print(f" Chaves principais: {list(data.keys())[:10]}")
# Tentar encontrar matérias
if 'dados' in data:
print(f" Total de itens em 'dados': {len(data['dados']) if isinstance(data['dados'], list) else 'N/A'}")
elif 'Materias' in data or 'materias' in data:
materias = data.get('Materias') or data.get('materias')
if isinstance(materias, list):
print(f" Total de matérias: {len(materias)}")
if len(materias) > 0:
print(f" Exemplo primeira matéria: {list(materias[0].keys())[:5]}")
print()
print("📄 Resposta completa (primeiros 500 chars):")
print(json.dumps(data, indent=2, ensure_ascii=False)[:500])
print("...")
return data
except json.JSONDecodeError:
print(f"⚠️ Resposta não é JSON")
print(f"📄 Resposta (primeiros 300 chars):")
print(response.text[:300])
return None
else:
print(f"❌ Erro HTTP: {response.status_code}")
print(f"📄 Resposta: {response.text[:300]}")
return None
except requests.exceptions.Timeout:
print(f"❌ Timeout - servidor não respondeu a tempo")
return None
except requests.exceptions.ConnectionError:
print(f"❌ Erro de conexão - não foi possível conectar ao servidor")
return None
except Exception as e:
print(f"❌ Erro: {e}")
return None
if __name__ == "__main__":
print("=" * 60)
print("🔍 TESTE DE ENDPOINT - SENADO FEDERAL")
print("=" * 60)
print()
print("ℹ️ Este script testa um endpoint do Senado identificado no Swagger UI")
print("📚 Swagger: https://legis.senado.leg.br/dadosabertos/api-docs/swagger-ui/index.html")
print()
print("=" * 60)
print()
# EXEMPLO: Substituir pelo endpoint encontrado no Swagger
endpoint_exemplo = "https://legis.senado.leg.br/dadosabertos/api/v2/materia/listaMateriasTramitando"
print("💡 Para testar:")
print(" 1. Abra o Swagger UI no navegador")
print(" 2. Encontre o endpoint (ex: listaMateriasTramitando)")
print(" 3. Copie a URL completa mostrada no Swagger")
print(" 4. Edite este script e substitua 'endpoint_exemplo'")
print(" 5. Execute novamente: python testar_endpoint_senado.py")
print()
print("-" * 60)
print()
# Descomentar e editar quando tiver o endpoint:
"""
# COLE AQUI O ENDPOINT ENCONTRADO NO SWAGGER:
endpoint = "https://legis.senado.leg.br/dadosabertos/[COLE_AQUI]"
# Parâmetros típicos (ajustar conforme Swagger):
params = {
"ano": 2024,
"sigla": "PLS"
}
# Executar teste
resultado = testar_endpoint_senado(endpoint, params=params)
if resultado:
print("\n✅ Teste bem-sucedido!")
print("📝 Próximo passo: atualizar api_radar.py com este endpoint")
else:
print("\n❌ Teste falhou - verificar endpoint e parâmetros")
"""
print("⚠️ Endpoint ainda não configurado")
print(" Edite este script com o endpoint encontrado no Swagger UI")