datajud 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +29 -11
- data/examples/find.rb +3 -3
- data/lib/datajud/process.rb +49 -85
- data/lib/datajud/version.rb +1 -1
- data/lib/datajud.rb +20 -8
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5df3f8cadbf3eb0e40ba6891207bc56a076e5624e171cd99e1fef1ee66cf1696
|
|
4
|
+
data.tar.gz: bfc125d69fb6a639afbc0891db64d301209cf7901e14a8fee82477623e521153
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6ad607e3b195cc8055bcad7b5e77854694a91297f86af88391ccd4c13cdeac5a49394315a9a0120dde19f49507526c41849ffe7ad3fc6ed2019ad921d74ad8dd
|
|
7
|
+
data.tar.gz: f9b89ba96631fa69025ae5d6b52a5cc142c4026aaccb5f1397b3459a502a5189eb9e9cc48bcdd1046b7f78cdc461697b8f6e915728e73105d51907f995afcdae
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [0.1.4] - 2026-03-12
|
|
4
|
+
|
|
5
|
+
- Todos os atributos e subatributos do processo agora podem ser acessados por ponto (OpenStruct), sem classes manuais.
|
|
6
|
+
|
|
7
|
+
## [0.1.3] - 2026-03-12
|
|
8
|
+
|
|
9
|
+
- Exposed object-oriented accessors for nested attributes (ex.: `processo.vara.nome`).
|
|
10
|
+
- Standardized on `andamentos` and removed the `movimentacoes` alias.
|
|
11
|
+
|
|
3
12
|
## [0.1.2] - 2026-03-12
|
|
4
13
|
|
|
5
14
|
- Added `Datajud.find` to return process data via an object-oriented API.
|
data/README.md
CHANGED
|
@@ -19,19 +19,35 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
|
19
19
|
```ruby
|
|
20
20
|
require 'datajud'
|
|
21
21
|
|
|
22
|
+
# Busca processo (tribunal pode ser explícito ou inferido)
|
|
22
23
|
processo = Datajud.find("00008323520184013202")
|
|
23
|
-
|
|
24
|
-
# Com tribunal explícito
|
|
25
24
|
processo = Datajud.find("00008323520184013202", tribunal: "trf1")
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
processo.
|
|
29
|
-
processo.
|
|
30
|
-
processo.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
processo.
|
|
34
|
-
|
|
26
|
+
# Acessa atributos principais
|
|
27
|
+
puts processo.tribunal # Tribunal como objeto ou string
|
|
28
|
+
puts processo.numero
|
|
29
|
+
puts processo.vara
|
|
30
|
+
puts processo.situacao
|
|
31
|
+
puts processo.andamentos
|
|
32
|
+
puts processo.documentos
|
|
33
|
+
puts processo.audiencias
|
|
34
|
+
puts processo.sistema
|
|
35
|
+
puts processo.formato
|
|
36
|
+
puts processo.data_ultima_atualizacao
|
|
37
|
+
puts processo.data_ajuizamento
|
|
38
|
+
puts processo.nivel_sigilo
|
|
39
|
+
puts processo.id
|
|
40
|
+
puts processo.timestamp
|
|
41
|
+
|
|
42
|
+
# Tribunal como objeto (se disponível)
|
|
43
|
+
puts processo.tribunal.nome if processo.tribunal.respond_to?(:nome)
|
|
44
|
+
puts processo.tribunal.sigla if processo.tribunal.respond_to?(:sigla)
|
|
45
|
+
puts processo.tribunal.esfera if processo.tribunal.respond_to?(:esfera)
|
|
46
|
+
|
|
47
|
+
# Exemplos de acesso orientado a objeto
|
|
48
|
+
puts processo.vara.nome if processo.vara.respond_to?(:nome)
|
|
49
|
+
puts processo.vara.comarca.nome if processo.vara&.comarca&.respond_to?(:nome)
|
|
50
|
+
puts processo.assunto.map(&:nome) if processo.assunto
|
|
35
51
|
|
|
36
52
|
# Tabela HTML de endpoints (todos os tribunais conhecidos)
|
|
37
53
|
Datajud.endpoints_table(Datajud::TRIBUNAIS_SIGLAS)
|
|
@@ -42,6 +58,8 @@ Datajud.endpoints_table(Datajud::TRIBUNAIS_SIGLAS)
|
|
|
42
58
|
```ruby
|
|
43
59
|
# API orientada a objeto
|
|
44
60
|
processo = Datajud.find("00008323520184013202", tribunal: "trf1")
|
|
61
|
+
# ou
|
|
62
|
+
processo = Datajud.find("00008323520184013202", "trf1")
|
|
45
63
|
|
|
46
64
|
# Retorno bruto (hash)
|
|
47
65
|
resultado = Datajud.processo("00008323520184013202", tribunal: "trf1")
|
|
@@ -73,7 +91,7 @@ para evitar varrer todas as bases.
|
|
|
73
91
|
|
|
74
92
|
```ruby
|
|
75
93
|
processo = Datajud.find("0000832-35.2018.8.26.0202")
|
|
76
|
-
puts processo.tribunal
|
|
94
|
+
puts processo.tribunal.nome
|
|
77
95
|
```
|
|
78
96
|
|
|
79
97
|
> A UF da comarca é derivada localmente pelo código IBGE do município quando disponível.
|
data/examples/find.rb
CHANGED
|
@@ -11,11 +11,11 @@ begin
|
|
|
11
11
|
processo = Datajud.find("0000832-35.2018.8.26.0202")
|
|
12
12
|
|
|
13
13
|
if processo
|
|
14
|
-
puts "Tribunal: #{processo.tribunal}"
|
|
14
|
+
puts "Tribunal: #{processo.tribunal.nome}"
|
|
15
15
|
puts "Número: #{processo.numero}"
|
|
16
|
-
puts "Classe: #{processo.classe}"
|
|
16
|
+
puts "Classe: #{processo.classe.nome}"
|
|
17
17
|
puts "Partes: #{processo.partes.map(&:nome).join(', ')}"
|
|
18
|
-
puts "
|
|
18
|
+
puts "Andamentos: #{processo.andamentos.size}"
|
|
19
19
|
else
|
|
20
20
|
puts "Processo não encontrado."
|
|
21
21
|
end
|
data/lib/datajud/process.rb
CHANGED
|
@@ -6,99 +6,63 @@ module Datajud
|
|
|
6
6
|
# Representa um processo retornado pela API DataJud.
|
|
7
7
|
# Fornece acesso simples a campos comuns via métodos.
|
|
8
8
|
class Processo
|
|
9
|
-
|
|
9
|
+
def self.deep_struct(obj)
|
|
10
|
+
case obj
|
|
11
|
+
when Hash
|
|
12
|
+
OpenStruct.new(obj.transform_values { |v| deep_struct(v) })
|
|
13
|
+
when Array
|
|
14
|
+
obj.map { |v| deep_struct(v) }
|
|
15
|
+
else
|
|
16
|
+
obj
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
def municipio_ibge
|
|
20
|
+
orgao = instance_variable_get(:@orgao_julgador) || instance_variable_get(:@orgao_julgador) || self.respond_to?(:orgao_julgador) ? self.orgao_julgador : nil
|
|
21
|
+
return nil unless orgao && orgao.is_a?(Hash)
|
|
22
|
+
orgao['codigoMunicipioIBGE'] || orgao[:codigoMunicipioIBGE]
|
|
23
|
+
end
|
|
24
|
+
def comarca_ibge_codigo
|
|
25
|
+
v = instance_variable_get(:@vara)
|
|
26
|
+
return nil unless v && v.is_a?(Hash)
|
|
27
|
+
comarca = v['comarca'] || v[:comarca]
|
|
28
|
+
return nil unless comarca && comarca.is_a?(Hash)
|
|
29
|
+
comarca['codigoIbge'] || comarca[:codigoIbge] || comarca['ibge'] || comarca[:ibge]
|
|
30
|
+
end
|
|
31
|
+
attr_reader :tribunal
|
|
10
32
|
|
|
11
33
|
def initialize(raw)
|
|
12
|
-
|
|
13
|
-
@tribunal = raw[:tribunal] || raw['tribunal']
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@data['numero'] || @data[:numero]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def classe
|
|
22
|
-
@data['classe'] || @data[:classe]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def vara
|
|
26
|
-
v = @data['vara'] || @data[:vara]
|
|
27
|
-
return nil unless v
|
|
28
|
-
|
|
29
|
-
OpenStruct.new(
|
|
30
|
-
nome: v['nome'] || v[:nome],
|
|
31
|
-
codigo: v['codigo'] || v[:codigo],
|
|
32
|
-
comarca: v['comarca'] || v[:comarca]
|
|
33
|
-
)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def situacao
|
|
37
|
-
@data['situacao'] || @data[:situacao]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def origem
|
|
41
|
-
@data['origem'] || @data[:origem]
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def instancia
|
|
45
|
-
@data['instancia'] || @data[:instancia]
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def assunto
|
|
49
|
-
@data['assunto'] || @data[:assunto]
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def partes
|
|
53
|
-
partes = @data['partes'] || @data[:partes] || []
|
|
54
|
-
partes.map do |p|
|
|
55
|
-
OpenStruct.new(
|
|
56
|
-
nome: p['nome'] || p[:nome],
|
|
57
|
-
tipo: p['tipo'] || p['tipoParte'] || p[:tipo],
|
|
58
|
-
documento: p['documento'] || p[:documento]
|
|
59
|
-
)
|
|
34
|
+
processo_hash = raw[:processo] || raw['processo'] || raw
|
|
35
|
+
@tribunal = self.class.deep_struct(raw[:tribunal] || raw['tribunal'])
|
|
36
|
+
processo_hash.each do |k, v|
|
|
37
|
+
ivar = "@#{k.to_s.gsub(/([A-Z])/, '_\\1').downcase}"
|
|
38
|
+
instance_variable_set(ivar, self.class.deep_struct(v))
|
|
39
|
+
self.class.send(:attr_reader, k.to_s.gsub(/([A-Z])/, '_\\1').downcase)
|
|
60
40
|
end
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
41
|
+
if processo_hash['orgaoJulgador'] || processo_hash[:orgaoJulgador]
|
|
42
|
+
orgao = processo_hash['orgaoJulgador'] || processo_hash[:orgaoJulgador]
|
|
43
|
+
instance_variable_set(:@orgao_julgador, self.class.deep_struct(orgao))
|
|
44
|
+
self.class.send(:attr_reader, :orgao_julgador)
|
|
45
|
+
if orgao['codigoMunicipioIBGE'] || orgao[:codigoMunicipioIBGE]
|
|
46
|
+
vara = instance_variable_get(:@vara)
|
|
47
|
+
if vara && vara.respond_to?(:comarca)
|
|
48
|
+
comarca = vara.comarca
|
|
49
|
+
if comarca && comarca.is_a?(OpenStruct)
|
|
50
|
+
ibge = orgao['codigoMunicipioIBGE'] || orgao[:codigoMunicipioIBGE]
|
|
51
|
+
comarca.codigoIbge = ibge if comarca.respond_to?(:codigoIbge=)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
71
55
|
end
|
|
72
|
-
end
|
|
73
56
|
|
|
74
|
-
def documentos
|
|
75
|
-
docs = @data['documentos'] || @data[:documentos] || []
|
|
76
|
-
docs.map do |d|
|
|
77
|
-
OpenStruct.new(
|
|
78
|
-
titulo: d['titulo'] || d['nomeDocumento'] || d[:titulo],
|
|
79
|
-
tipo: d['tipo'] || d['tipoDocumento'] || d[:tipo],
|
|
80
|
-
data: d['data'] || d['dataJuntada'] || d[:data],
|
|
81
|
-
assinatura_digital: d['assinatura_digital'] || d['assinaturaDigital'] || d[:assinatura_digital]
|
|
82
|
-
)
|
|
83
|
-
end
|
|
84
57
|
end
|
|
85
58
|
|
|
86
|
-
def
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
tipo: a['tipo'] || a[:tipo],
|
|
92
|
-
status: a['status'] || a['statusAudiencia'] || a[:status],
|
|
93
|
-
observacao: a['observacao'] || a[:observacao]
|
|
94
|
-
)
|
|
59
|
+
def codigo_municipio_ibge
|
|
60
|
+
if respond_to?(:orgao_julgador) && orgao_julgador.is_a?(Hash)
|
|
61
|
+
orgao_julgador['codigoMunicipioIBGE'] || orgao_julgador[:codigoMunicipioIBGE]
|
|
62
|
+
else
|
|
63
|
+
nil
|
|
95
64
|
end
|
|
96
65
|
end
|
|
97
|
-
|
|
98
|
-
alias movimentacoes andamentos
|
|
99
|
-
|
|
100
|
-
def to_h
|
|
101
|
-
{ tribunal: tribunal, processo: data }
|
|
102
|
-
end
|
|
66
|
+
# Only tribunal is explicit; all other fields are dynamic.
|
|
103
67
|
end
|
|
104
68
|
end
|
data/lib/datajud/version.rb
CHANGED
data/lib/datajud.rb
CHANGED
|
@@ -357,11 +357,11 @@ module Datajud
|
|
|
357
357
|
tribunal: tribunal_from(sigla, proc),
|
|
358
358
|
processo: {
|
|
359
359
|
numero: proc['numeroProcesso'],
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
360
|
+
vara: proc['orgaoJulgador'] ? {
|
|
361
|
+
nome: proc['orgaoJulgador']['nome'],
|
|
362
|
+
codigo: proc['orgaoJulgador']['codigo'],
|
|
363
|
+
comarca: comarca_from(proc['orgaoJulgador'], sigla)
|
|
364
|
+
} : nil,
|
|
365
365
|
situacao: proc['situacao'],
|
|
366
366
|
origem: proc['origem'],
|
|
367
367
|
instancia: proc['grau'],
|
|
@@ -390,7 +390,14 @@ module Datajud
|
|
|
390
390
|
status: aud['statusAudiencia'],
|
|
391
391
|
observacao: aud['observacao']
|
|
392
392
|
}
|
|
393
|
-
end
|
|
393
|
+
end,
|
|
394
|
+
sistema: proc['sistema'],
|
|
395
|
+
formato: proc['formato'],
|
|
396
|
+
dataHoraUltimaAtualizacao: proc['dataHoraUltimaAtualizacao'],
|
|
397
|
+
dataAjuizamento: proc['dataAjuizamento'],
|
|
398
|
+
nivelSigilo: proc['nivelSigilo'],
|
|
399
|
+
id: proc['id'],
|
|
400
|
+
timestamp: proc['@timestamp']
|
|
394
401
|
}
|
|
395
402
|
}
|
|
396
403
|
break
|
|
@@ -471,7 +478,8 @@ module Datajud
|
|
|
471
478
|
if comarca.is_a?(Hash)
|
|
472
479
|
nome = comarca['nome'] || comarca['descricao'] || comarca['nomeComarca']
|
|
473
480
|
uf = comarca['uf'] || comarca['siglaUf'] || comarca['estado']
|
|
474
|
-
|
|
481
|
+
hash = { nome: nome, uf: uf, tribunal: sigla.upcase }
|
|
482
|
+
return hash
|
|
475
483
|
end
|
|
476
484
|
|
|
477
485
|
nome = comarca || orgao_julgador['nome']
|
|
@@ -485,7 +493,11 @@ module Datajud
|
|
|
485
493
|
|
|
486
494
|
return nil unless nome
|
|
487
495
|
|
|
488
|
-
{ nome: nome, uf: uf, tribunal: sigla.upcase }
|
|
496
|
+
hash = { nome: nome, uf: uf, tribunal: sigla.upcase }
|
|
497
|
+
if orgao_julgador['codigoMunicipioIBGE']
|
|
498
|
+
hash[:codigoIbge] = orgao_julgador['codigoMunicipioIBGE']
|
|
499
|
+
end
|
|
500
|
+
hash
|
|
489
501
|
end
|
|
490
502
|
|
|
491
503
|
def self.ibge_uf_from(codigo_municipio)
|