File size: 5,016 Bytes
3c919fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/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")