brasilapi 0.7.0 → 0.9.0
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/.rubocop.yml +4 -5
- data/.yardopts +5 -0
- data/CHANGELOG.md +97 -0
- data/Gemfile +5 -2
- data/Gemfile.lock +67 -56
- data/README.md +357 -121
- data/Rakefile +18 -1
- data/lib/brasil_api/address.rb +38 -0
- data/lib/brasil_api/b3.rb +49 -0
- data/lib/brasil_api/bank.rb +31 -0
- data/lib/brasil_api/base.rb +214 -20
- data/lib/brasil_api/business_days.rb +44 -0
- data/lib/brasil_api/cambio.rb +47 -0
- data/lib/brasil_api/cid10.rb +46 -0
- data/lib/brasil_api/company.rb +20 -0
- data/lib/brasil_api/configuration.rb +52 -0
- data/lib/brasil_api/cpf.rb +36 -0
- data/lib/brasil_api/cptec.rb +84 -0
- data/lib/brasil_api/cvm.rb +76 -2
- data/lib/brasil_api/ddd.rb +67 -0
- data/lib/brasil_api/error.rb +51 -0
- data/lib/brasil_api/fipe.rb +111 -6
- data/lib/brasil_api/geolocation.rb +35 -0
- data/lib/brasil_api/holiday.rb +25 -2
- data/lib/brasil_api/hospital.rb +157 -0
- data/lib/brasil_api/ibge.rb +164 -0
- data/lib/brasil_api/ibpt.rb +106 -0
- data/lib/brasil_api/igpm.rb +66 -0
- data/lib/brasil_api/isbn.rb +25 -0
- data/lib/brasil_api/ncm.rb +43 -0
- data/lib/brasil_api/pix.rb +19 -0
- data/lib/brasil_api/registrobr.rb +20 -0
- data/lib/brasil_api/solar.rb +33 -0
- data/lib/brasil_api/status.rb +30 -0
- data/lib/brasil_api/taxas.rb +31 -0
- data/lib/brasil_api/tuss.rb +121 -0
- data/lib/brasil_api/version.rb +7 -1
- data/lib/brasil_api.rb +25 -5
- metadata +24 -7
- data/brasilapi.gemspec +0 -42
data/lib/brasil_api/cvm.rb
CHANGED
|
@@ -1,15 +1,89 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
3
8
|
module BrasilAPI
|
|
9
|
+
# Corretoras registradas na Comissão de Valores Mobiliários.
|
|
10
|
+
#
|
|
11
|
+
# @see https://brasilapi.com.br/docs#tag/CVM
|
|
4
12
|
class CVM < Base
|
|
5
13
|
class << self
|
|
6
|
-
|
|
7
|
-
|
|
14
|
+
# Lista as corretoras, opcionalmente filtradas por UF.
|
|
15
|
+
#
|
|
16
|
+
# @param state [String, nil] sigla da UF; omitida quando +nil+
|
|
17
|
+
# @return [Array<Hash>] corretoras e seus CNPJs
|
|
18
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
19
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
20
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
21
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
22
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
23
|
+
# @example Corretoras de São Paulo
|
|
24
|
+
# BrasilAPI::CVM.all(state: "SP")
|
|
25
|
+
# @see https://brasilapi.com.br/docs#tag/CVM
|
|
26
|
+
def all(state: nil)
|
|
27
|
+
get("/cvm/corretoras/v1", { uf: state })
|
|
8
28
|
end
|
|
9
29
|
|
|
30
|
+
# Busca uma corretora pelo CNPJ.
|
|
31
|
+
#
|
|
32
|
+
# @param cnpj [String] CNPJ, com ou sem máscara
|
|
33
|
+
# @return [Hash] dados da corretora
|
|
34
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
35
|
+
# @raise [BrasilAPI::NotFound] quando o CNPJ não é de uma corretora
|
|
36
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
37
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
38
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
39
|
+
# @example
|
|
40
|
+
# BrasilAPI::CVM.find_by_cnpj("74014747000135")
|
|
41
|
+
# @see https://brasilapi.com.br/docs#tag/CVM
|
|
10
42
|
def find_by_cnpj(cnpj)
|
|
11
43
|
get("/cvm/corretoras/v1/#{cnpj}")
|
|
12
44
|
end
|
|
13
45
|
end
|
|
46
|
+
|
|
47
|
+
# Fundos de investimento registrados na CVM.
|
|
48
|
+
#
|
|
49
|
+
# @see https://brasilapi.com.br/docs#tag/CVM
|
|
50
|
+
class Fund < Base
|
|
51
|
+
class << self
|
|
52
|
+
# Lista fundos, com paginação opcional.
|
|
53
|
+
#
|
|
54
|
+
# @param page [Integer, nil] página, a partir de 1
|
|
55
|
+
# @param size [Integer, nil] quantidade de itens na página
|
|
56
|
+
# @return [Hash] página de fundos
|
|
57
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
58
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
59
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
60
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
61
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
62
|
+
# @example Primeira página, um item
|
|
63
|
+
# BrasilAPI::CVM::Fund.all(page: 1, size: 1)
|
|
64
|
+
# @see https://brasilapi.com.br/docs#tag/CVM
|
|
65
|
+
def all(page: nil, size: nil)
|
|
66
|
+
get("/cvm/fundos/v1", { page: page, size: size })
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Busca um fundo pelo CNPJ.
|
|
70
|
+
#
|
|
71
|
+
# A BrasilAPI só aceita dígitos no caminho, então a máscara é removida.
|
|
72
|
+
#
|
|
73
|
+
# @param cnpj [String] CNPJ, com ou sem máscara
|
|
74
|
+
# @return [Hash] dados do fundo
|
|
75
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
76
|
+
# @raise [BrasilAPI::NotFound] quando o CNPJ não é de um fundo
|
|
77
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
78
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
79
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
80
|
+
# @example
|
|
81
|
+
# BrasilAPI::CVM::Fund.find_by_cnpj("00.000.684/0001-21")
|
|
82
|
+
# @see https://brasilapi.com.br/docs#tag/CVM
|
|
83
|
+
def find_by_cnpj(cnpj)
|
|
84
|
+
get("/cvm/fundos/v1/#{cnpj.to_s.gsub(/\D/, "")}")
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
14
88
|
end
|
|
15
89
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
8
|
+
module BrasilAPI
|
|
9
|
+
# Códigos DDD e as localidades que eles atendem.
|
|
10
|
+
#
|
|
11
|
+
# @see https://brasilapi.com.br/docs#tag/DDD
|
|
12
|
+
class DDD < Base
|
|
13
|
+
class << self
|
|
14
|
+
# Lista todos os DDDs.
|
|
15
|
+
#
|
|
16
|
+
# @return [Array<Hash>] estado e cidades de cada DDD
|
|
17
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
18
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
19
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
20
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
21
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
22
|
+
# @example
|
|
23
|
+
# BrasilAPI::DDD.all
|
|
24
|
+
# @see https://brasilapi.com.br/docs#tag/DDD
|
|
25
|
+
def all
|
|
26
|
+
get("/ddd/v1")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Busca as cidades de um DDD.
|
|
30
|
+
#
|
|
31
|
+
# A v2 é o padrão. +version: 1+ consulta a rota antiga.
|
|
32
|
+
#
|
|
33
|
+
# @param ddd [String, Integer] código DDD
|
|
34
|
+
# @param version [Integer] versão da rota, +1+ ou +2+
|
|
35
|
+
# @return [Hash] estado e cidades atendidas
|
|
36
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
37
|
+
# @raise [BrasilAPI::NotFound] quando o DDD não existe
|
|
38
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
39
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
40
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
41
|
+
# @example DDD 11 na v2
|
|
42
|
+
# BrasilAPI::DDD.find(11)
|
|
43
|
+
# @example DDD 86 na v1
|
|
44
|
+
# BrasilAPI::DDD.find(86, version: 1)
|
|
45
|
+
# @see https://brasilapi.com.br/docs#tag/DDD
|
|
46
|
+
def find(ddd, version: 2)
|
|
47
|
+
get("/ddd/v#{version}/#{ddd}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Lista os DDDs de uma unidade federativa.
|
|
51
|
+
#
|
|
52
|
+
# @param state [String] sigla da UF
|
|
53
|
+
# @return [Array<Hash>] DDDs da UF
|
|
54
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
55
|
+
# @raise [BrasilAPI::NotFound] quando a UF não existe
|
|
56
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
57
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
58
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
59
|
+
# @example DDDs de São Paulo
|
|
60
|
+
# BrasilAPI::DDD.by_state("SP")
|
|
61
|
+
# @see https://brasilapi.com.br/docs#tag/DDD
|
|
62
|
+
def by_state(state)
|
|
63
|
+
get("/ddd/uf/v1/#{state}")
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
8
|
+
module BrasilAPI
|
|
9
|
+
# Falha ao consultar a BrasilAPI.
|
|
10
|
+
#
|
|
11
|
+
# +Timeout+ não traz código HTTP. As demais subclasses preenchem +status+.
|
|
12
|
+
class Error < StandardError
|
|
13
|
+
# Código HTTP da resposta.
|
|
14
|
+
#
|
|
15
|
+
# @return [Integer, nil]
|
|
16
|
+
attr_reader :status
|
|
17
|
+
|
|
18
|
+
# Corpo da resposta, já interpretado quando é JSON.
|
|
19
|
+
#
|
|
20
|
+
# @return [Hash, Array, String, nil]
|
|
21
|
+
attr_reader :body
|
|
22
|
+
|
|
23
|
+
# Campo +type+ devolvido pela BrasilAPI.
|
|
24
|
+
#
|
|
25
|
+
# @return [String, nil]
|
|
26
|
+
attr_reader :type
|
|
27
|
+
|
|
28
|
+
# @param message [String, nil] texto exibido por +Exception#message+
|
|
29
|
+
# @param status [Integer, nil] código HTTP
|
|
30
|
+
# @param body [Hash, Array, String, nil] corpo da resposta
|
|
31
|
+
# @param type [String, nil] classificação devolvida pela BrasilAPI
|
|
32
|
+
def initialize(message = nil, status: nil, body: nil, type: nil)
|
|
33
|
+
@status = status
|
|
34
|
+
@body = body
|
|
35
|
+
@type = type
|
|
36
|
+
super(message)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# A BrasilAPI respondeu 404.
|
|
41
|
+
class NotFound < Error; end
|
|
42
|
+
|
|
43
|
+
# A BrasilAPI respondeu 400.
|
|
44
|
+
class BadRequest < Error; end
|
|
45
|
+
|
|
46
|
+
# A BrasilAPI respondeu 5xx.
|
|
47
|
+
class ServerError < Error; end
|
|
48
|
+
|
|
49
|
+
# A conexão estourou +open_timeout+ ou +read_timeout+.
|
|
50
|
+
class Timeout < Error; end
|
|
51
|
+
end
|
data/lib/brasil_api/fipe.rb
CHANGED
|
@@ -1,24 +1,129 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
3
8
|
module BrasilAPI
|
|
9
|
+
# Tabelas de preço de veículos da FIPE.
|
|
10
|
+
#
|
|
11
|
+
# +reference_table+ vira o parâmetro +tabela_referencia+ e some da query quando +nil+.
|
|
12
|
+
#
|
|
13
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
4
14
|
class FIPE < Base
|
|
5
15
|
class << self
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
|
|
16
|
+
# Lista as marcas de um tipo de veículo.
|
|
17
|
+
#
|
|
18
|
+
# Sem +vehicle_type+, devolve as marcas de todos os tipos.
|
|
19
|
+
#
|
|
20
|
+
# @param vehicle_type [String, nil] +"carros"+, +"motos"+ ou +"caminhoes"+
|
|
21
|
+
# @param reference_table [Integer, nil] código da tabela de referência
|
|
22
|
+
# @return [Array<Hash>] nome e código de cada marca
|
|
23
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
24
|
+
# @raise [BrasilAPI::NotFound] quando o tipo de veículo não existe
|
|
25
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
26
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
27
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
28
|
+
# @example Marcas de carros na tabela 290
|
|
29
|
+
# BrasilAPI::FIPE.vehicle_brands("carros", 290)
|
|
30
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
31
|
+
def vehicle_brands(vehicle_type = nil, reference_table = nil)
|
|
32
|
+
suffix = vehicle_type ? "/#{vehicle_type}" : ""
|
|
33
|
+
get("/fipe/marcas/v1#{suffix}", { tabela_referencia: reference_table })
|
|
9
34
|
end
|
|
10
35
|
|
|
11
|
-
#
|
|
36
|
+
# Lista os anos de um modelo.
|
|
37
|
+
#
|
|
38
|
+
# @param vehicle_type [String] +"carros"+, +"motos"+ ou +"caminhoes"+
|
|
39
|
+
# @param brand_code [String, Integer] código da marca
|
|
40
|
+
# @param model_code [String, Integer] código do modelo
|
|
41
|
+
# @param reference_table [Integer, nil] código da tabela de referência
|
|
42
|
+
# @return [Array<Hash>] anos disponíveis para o modelo
|
|
43
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
44
|
+
# @raise [BrasilAPI::NotFound] quando marca ou modelo não existem
|
|
45
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
46
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
47
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
48
|
+
# @example Anos do VW Gol
|
|
49
|
+
# BrasilAPI::FIPE.vehicle_years("carros", 59, 5585)
|
|
50
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
51
|
+
def vehicle_years(vehicle_type, brand_code, model_code, reference_table = nil)
|
|
52
|
+
get(
|
|
53
|
+
"/fipe/anos/v1/#{vehicle_type}/#{brand_code}/#{model_code}",
|
|
54
|
+
{ tabela_referencia: reference_table }
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Detalha um veículo em um ano específico.
|
|
59
|
+
#
|
|
60
|
+
# @param vehicle_type [String] +"carros"+, +"motos"+ ou +"caminhoes"+
|
|
61
|
+
# @param brand_code [String, Integer] código da marca
|
|
62
|
+
# @param model_code [String, Integer] código do modelo
|
|
63
|
+
# @param year_code [String] código do ano, por exemplo +"2013-3"+
|
|
64
|
+
# @param reference_table [Integer, nil] código da tabela de referência
|
|
65
|
+
# @return [Hash] preço, combustível e código FIPE
|
|
66
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
67
|
+
# @raise [BrasilAPI::NotFound] quando a combinação não existe
|
|
68
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
69
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
70
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
71
|
+
# @example Gol 2013
|
|
72
|
+
# BrasilAPI::FIPE.vehicle_details("carros", 59, 5585, "2013-3")
|
|
73
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
74
|
+
def vehicle_details(vehicle_type, brand_code, model_code, year_code, reference_table = nil)
|
|
75
|
+
get(
|
|
76
|
+
"/fipe/detalhes/v1/#{vehicle_type}/#{brand_code}/#{model_code}/#{year_code}",
|
|
77
|
+
{ tabela_referencia: reference_table }
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Consulta o preço pelo código FIPE.
|
|
82
|
+
#
|
|
83
|
+
# @param vehicle_code [String] código FIPE, por exemplo +"005329-5"+
|
|
84
|
+
# @param reference_table [Integer, nil] código da tabela de referência
|
|
85
|
+
# @return [Array<Hash>] preço nas tabelas consultadas
|
|
86
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
87
|
+
# @raise [BrasilAPI::NotFound] quando o código FIPE não existe
|
|
88
|
+
# @raise [BrasilAPI::ServerError] quando a fonte da FIPE está indisponível
|
|
89
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
90
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
91
|
+
# @example
|
|
92
|
+
# BrasilAPI::FIPE.vehicle_price("005329-5")
|
|
93
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
12
94
|
def vehicle_price(vehicle_code, reference_table = nil)
|
|
13
95
|
get("/fipe/preco/v1/#{vehicle_code}", { tabela_referencia: reference_table })
|
|
14
96
|
end
|
|
15
97
|
|
|
16
|
-
#
|
|
98
|
+
# Lista as tabelas de referência publicadas pela FIPE.
|
|
99
|
+
#
|
|
100
|
+
# @return [Array<Hash>] código e mês de cada tabela
|
|
101
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
102
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
103
|
+
# @raise [BrasilAPI::ServerError] quando a fonte da FIPE está indisponível
|
|
104
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
105
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
106
|
+
# @example
|
|
107
|
+
# BrasilAPI::FIPE.fipe_tables
|
|
108
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
17
109
|
def fipe_tables
|
|
18
110
|
get("/fipe/tabelas/v1")
|
|
19
111
|
end
|
|
20
112
|
|
|
21
|
-
#
|
|
113
|
+
# Lista os modelos de uma marca.
|
|
114
|
+
#
|
|
115
|
+
# @param vehicle_type [String] +"carros"+, +"motos"+ ou +"caminhoes"+
|
|
116
|
+
# @param brand_code [String, Integer] código da marca
|
|
117
|
+
# @param reference_table [Integer, nil] código da tabela de referência
|
|
118
|
+
# @return [Array<Hash>] modelos da marca
|
|
119
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
120
|
+
# @raise [BrasilAPI::NotFound] quando a marca não existe
|
|
121
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
122
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
123
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
124
|
+
# @example Modelos Volkswagen na tabela 290
|
|
125
|
+
# BrasilAPI::FIPE.list_vehicles("carros", 59, 290)
|
|
126
|
+
# @see https://brasilapi.com.br/docs#tag/FIPE
|
|
22
127
|
def list_vehicles(vehicle_type, brand_code, reference_table = nil)
|
|
23
128
|
get("/fipe/veiculos/v1/#{vehicle_type}/#{brand_code}", { tabela_referencia: reference_table })
|
|
24
129
|
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
8
|
+
module BrasilAPI
|
|
9
|
+
# Geocodificação reversa a partir de latitude e longitude.
|
|
10
|
+
#
|
|
11
|
+
# @see https://brasilapi.com.br/docs#tag/GEOLOCATION
|
|
12
|
+
class Geolocation < Base
|
|
13
|
+
class << self
|
|
14
|
+
# Descobre o endereço de um ponto.
|
|
15
|
+
#
|
|
16
|
+
# +language+ vira o parâmetro homônimo e some da query quando +nil+.
|
|
17
|
+
#
|
|
18
|
+
# @param latitude [Float, String] latitude em graus decimais
|
|
19
|
+
# @param longitude [Float, String] longitude em graus decimais
|
|
20
|
+
# @param language [String, nil] idioma da resposta, por exemplo +"pt"+ ou +"en"+
|
|
21
|
+
# @return [Hash] país, estado, cidade e endereço aproximado
|
|
22
|
+
# @raise [BrasilAPI::BadRequest] quando as coordenadas são inválidas
|
|
23
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
24
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
25
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
26
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
27
|
+
# @example Centro de São Paulo, em português
|
|
28
|
+
# BrasilAPI::Geolocation.reverse(-23.55, -46.63, language: "pt")
|
|
29
|
+
# @see https://brasilapi.com.br/docs#tag/GEOLOCATION
|
|
30
|
+
def reverse(latitude, longitude, language: nil)
|
|
31
|
+
get("/geolocation/v1", { latitude: latitude, longitude: longitude, language: language })
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
data/lib/brasil_api/holiday.rb
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
3
8
|
module BrasilAPI
|
|
9
|
+
# Feriados nacionais e, quando a UF é informada, feriados estaduais.
|
|
10
|
+
#
|
|
11
|
+
# @see https://brasilapi.com.br/docs#tag/FERIADOS
|
|
4
12
|
class Holiday < Base
|
|
5
13
|
class << self
|
|
6
|
-
|
|
7
|
-
|
|
14
|
+
# Lista os feriados de um ano.
|
|
15
|
+
#
|
|
16
|
+
# +state+ vira o parâmetro +uf+ e só é enviado quando presente.
|
|
17
|
+
#
|
|
18
|
+
# @param year [String, Integer] ano com quatro dígitos
|
|
19
|
+
# @param state [String, nil] sigla da UF dos feriados estaduais
|
|
20
|
+
# @return [Array<Hash>] data, nome e tipo de cada feriado
|
|
21
|
+
# @raise [BrasilAPI::BadRequest] quando o ano é inválido
|
|
22
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
23
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
24
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
25
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
26
|
+
# @example Feriados de São Paulo em 2024
|
|
27
|
+
# BrasilAPI::Holiday.by_year(2024, state: "SP")
|
|
28
|
+
# @see https://brasilapi.com.br/docs#tag/FERIADOS
|
|
29
|
+
def by_year(year, state: nil)
|
|
30
|
+
get("/feriados/v1/#{year}", { uf: state })
|
|
8
31
|
end
|
|
9
32
|
end
|
|
10
33
|
end
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
|
|
4
|
+
#
|
|
5
|
+
# @example Bancos participantes do STR
|
|
6
|
+
# BrasilAPI::Bank.all
|
|
7
|
+
# @see https://brasilapi.com.br/docs
|
|
8
|
+
module BrasilAPI
|
|
9
|
+
# Estabelecimentos de saúde do CNES.
|
|
10
|
+
#
|
|
11
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
12
|
+
class Hospital < Base
|
|
13
|
+
# Filtros de {Hospital.all} e o nome enviado na query.
|
|
14
|
+
#
|
|
15
|
+
# @return [Hash{Symbol=>Symbol}]
|
|
16
|
+
LIST_PARAMS = {
|
|
17
|
+
vertical: :vertical,
|
|
18
|
+
state: :uf,
|
|
19
|
+
city: :municipio,
|
|
20
|
+
service: :atendimento,
|
|
21
|
+
query: :q,
|
|
22
|
+
limit: :limit,
|
|
23
|
+
offset: :offset
|
|
24
|
+
}.freeze
|
|
25
|
+
|
|
26
|
+
# Filtros de {Hospital.nearby} e o nome enviado na query.
|
|
27
|
+
#
|
|
28
|
+
# @return [Hash{Symbol=>Symbol}]
|
|
29
|
+
NEARBY_PARAMS = {
|
|
30
|
+
zip_code: :cep,
|
|
31
|
+
latitude: :latitude,
|
|
32
|
+
longitude: :longitude,
|
|
33
|
+
city: :municipio,
|
|
34
|
+
state: :uf,
|
|
35
|
+
radius: :raio_km,
|
|
36
|
+
vertical: :vertical,
|
|
37
|
+
service: :atendimento,
|
|
38
|
+
limit: :limit,
|
|
39
|
+
offset: :offset
|
|
40
|
+
}.freeze
|
|
41
|
+
|
|
42
|
+
class << self
|
|
43
|
+
# Lista estabelecimentos de saúde.
|
|
44
|
+
#
|
|
45
|
+
# @param filters [Hash] filtros opcionais
|
|
46
|
+
# @option filters [String] :vertical vertical do estabelecimento
|
|
47
|
+
# @option filters [String] :state sigla da UF (+uf+)
|
|
48
|
+
# @option filters [String] :city município (+municipio+)
|
|
49
|
+
# @option filters [String] :service tipo de atendimento (+atendimento+)
|
|
50
|
+
# @option filters [String] :query texto livre (+q+)
|
|
51
|
+
# @option filters [Integer] :limit quantidade máxima de itens
|
|
52
|
+
# @option filters [Integer] :offset deslocamento da página
|
|
53
|
+
# @return [Hash] total e lista de estabelecimentos
|
|
54
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
55
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
56
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
57
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
58
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
59
|
+
# @example Hospitais de Teresina
|
|
60
|
+
# BrasilAPI::Hospital.all(state: "PI", city: "TERESINA", limit: 1)
|
|
61
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
62
|
+
def all(**filters)
|
|
63
|
+
get("/hospitais/v1", translate(filters, LIST_PARAMS))
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Lista estabelecimentos próximos de um CEP ou de um ponto.
|
|
67
|
+
#
|
|
68
|
+
# @param filters [Hash] filtros opcionais
|
|
69
|
+
# @option filters [String] :zip_code CEP de referência (+cep+)
|
|
70
|
+
# @option filters [Float] :latitude latitude de referência
|
|
71
|
+
# @option filters [Float] :longitude longitude de referência
|
|
72
|
+
# @option filters [String] :city município (+municipio+)
|
|
73
|
+
# @option filters [String] :state sigla da UF (+uf+)
|
|
74
|
+
# @option filters [Numeric] :radius raio em quilômetros (+raio_km+)
|
|
75
|
+
# @option filters [String] :vertical vertical do estabelecimento
|
|
76
|
+
# @option filters [String] :service tipo de atendimento (+atendimento+)
|
|
77
|
+
# @option filters [Integer] :limit quantidade máxima de itens
|
|
78
|
+
# @option filters [Integer] :offset deslocamento da página
|
|
79
|
+
# @return [Hash] estabelecimentos ordenados por distância
|
|
80
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
81
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
82
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
83
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
84
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
85
|
+
# @example Vizinhos do CEP 64001-100
|
|
86
|
+
# BrasilAPI::Hospital.nearby(zip_code: "64001100", limit: 1)
|
|
87
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
88
|
+
def nearby(**filters)
|
|
89
|
+
get("/hospitais/v1/proximos", translate(filters, NEARBY_PARAMS))
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Lista os valores aceitos nos filtros de hospitais.
|
|
93
|
+
#
|
|
94
|
+
# @return [Hash] verticais, atendimentos e demais opções
|
|
95
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
96
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
97
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
98
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
99
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
100
|
+
# @example
|
|
101
|
+
# BrasilAPI::Hospital.options
|
|
102
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
103
|
+
def options
|
|
104
|
+
get("/hospitais/v1/opcoes")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Lista os centros de informação toxicológica.
|
|
108
|
+
#
|
|
109
|
+
# +state+ vira +uf+ e só é enviado quando presente.
|
|
110
|
+
#
|
|
111
|
+
# @param state [String, nil] sigla da UF
|
|
112
|
+
# @return [Array<Hash>] unidades do CIATOX
|
|
113
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
114
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
115
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
116
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
117
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
118
|
+
# @example CIATOX do Piauí
|
|
119
|
+
# BrasilAPI::Hospital.ciatox(state: "PI")
|
|
120
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
121
|
+
def ciatox(state: nil)
|
|
122
|
+
get("/hospitais/v1/ciatox", { uf: state })
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Busca um estabelecimento pelo código CNES.
|
|
126
|
+
#
|
|
127
|
+
# @param cnes [String, Integer] código CNES
|
|
128
|
+
# @return [Hash] dados cadastrais do estabelecimento
|
|
129
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
130
|
+
# @raise [BrasilAPI::NotFound] quando o CNES não existe
|
|
131
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
132
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
133
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
134
|
+
# @example
|
|
135
|
+
# BrasilAPI::Hospital.find_by_cnes("2726998")
|
|
136
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
137
|
+
def find_by_cnes(cnes)
|
|
138
|
+
get("/hospitais/v1/cnes/#{cnes}")
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Lista os estados que têm estabelecimentos cadastrados.
|
|
142
|
+
#
|
|
143
|
+
# @return [Array<Hash>] sigla e quantidade por UF
|
|
144
|
+
# @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
|
|
145
|
+
# @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
|
|
146
|
+
# @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
|
|
147
|
+
# @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
|
|
148
|
+
# @raise [BrasilAPI::Error] em outras respostas de erro
|
|
149
|
+
# @example
|
|
150
|
+
# BrasilAPI::Hospital.states
|
|
151
|
+
# @see https://brasilapi.com.br/docs#tag/HOSPITAIS
|
|
152
|
+
def states
|
|
153
|
+
get("/hospitais/v1/estados")
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|