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.
@@ -0,0 +1,121 @@
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
+ # Terminologia Unificada da Saúde Suplementar.
10
+ #
11
+ # @see https://brasilapi.com.br/docs#tag/TUSS
12
+ class TUSS < Base
13
+ # Filtros de listagem, busca e autocompletar, e o nome enviado na query.
14
+ #
15
+ # @return [Hash{Symbol=>Symbol}]
16
+ PARAMS = {
17
+ query: :q,
18
+ name: :name,
19
+ code: :tuss,
20
+ match: :match,
21
+ sort: :sort,
22
+ order: :order,
23
+ fields: :fields,
24
+ limit: :limit,
25
+ offset: :offset
26
+ }.freeze
27
+
28
+ class << self
29
+ # Lista procedimentos da TUSS.
30
+ #
31
+ # @param filters [Hash] filtros opcionais
32
+ # @option filters [String] :query texto livre (+q+)
33
+ # @option filters [String] :name nome do procedimento
34
+ # @option filters [String] :code código TUSS (+tuss+)
35
+ # @option filters [String] :match modo de correspondência
36
+ # @option filters [String] :sort campo de ordenação
37
+ # @option filters [String] :order direção da ordenação
38
+ # @option filters [String] :fields campos devolvidos
39
+ # @option filters [Integer] :limit quantidade máxima de itens
40
+ # @option filters [Integer] :offset deslocamento da página
41
+ # @return [Hash] total e lista de procedimentos
42
+ # @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
43
+ # @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
44
+ # @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
45
+ # @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
46
+ # @raise [BrasilAPI::Error] em outras respostas de erro
47
+ # @example Primeiro procedimento
48
+ # BrasilAPI::TUSS.all(limit: 1)
49
+ # @see https://brasilapi.com.br/docs#tag/TUSS
50
+ def all(**filters)
51
+ get("/tuss/v1", translate(filters, PARAMS))
52
+ end
53
+
54
+ # Busca um procedimento pelo código TUSS.
55
+ #
56
+ # @param code [String, Integer] código do procedimento
57
+ # @return [Hash] descrição do procedimento
58
+ # @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
59
+ # @raise [BrasilAPI::NotFound] quando o código não existe
60
+ # @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
61
+ # @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
62
+ # @raise [BrasilAPI::Error] em outras respostas de erro
63
+ # @example Consulta em consultório
64
+ # BrasilAPI::TUSS.find_by_code("10101012")
65
+ # @see https://brasilapi.com.br/docs#tag/TUSS
66
+ def find_by_code(code)
67
+ get("/tuss/v1/#{code}")
68
+ end
69
+
70
+ # Procura procedimentos por texto e filtros.
71
+ #
72
+ # @param filters [Hash] filtros opcionais; as chaves são as de {PARAMS}
73
+ # @option filters [String] :query texto livre (+q+)
74
+ # @option filters [String] :name nome do procedimento
75
+ # @option filters [String] :code código TUSS (+tuss+)
76
+ # @option filters [String] :match modo de correspondência
77
+ # @option filters [String] :sort campo de ordenação
78
+ # @option filters [String] :order direção da ordenação
79
+ # @option filters [String] :fields campos devolvidos
80
+ # @option filters [Integer] :limit quantidade máxima de itens
81
+ # @option filters [Integer] :offset deslocamento da página
82
+ # @return [Hash] total e procedimentos encontrados
83
+ # @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
84
+ # @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
85
+ # @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
86
+ # @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
87
+ # @raise [BrasilAPI::Error] em outras respostas de erro
88
+ # @example
89
+ # BrasilAPI::TUSS.search(query: "consulta", limit: 1)
90
+ # @see https://brasilapi.com.br/docs#tag/TUSS
91
+ def search(**filters)
92
+ get("/tuss/v1/search", translate(filters, PARAMS))
93
+ end
94
+
95
+ # Sugere procedimentos a partir de um prefixo.
96
+ #
97
+ # @param filters [Hash] filtros opcionais; as chaves são as de {PARAMS}
98
+ # @option filters [String] :query texto livre (+q+)
99
+ # @option filters [String] :name nome do procedimento
100
+ # @option filters [String] :code código TUSS (+tuss+)
101
+ # @option filters [String] :match modo de correspondência
102
+ # @option filters [String] :sort campo de ordenação
103
+ # @option filters [String] :order direção da ordenação
104
+ # @option filters [String] :fields campos devolvidos
105
+ # @option filters [Integer] :limit quantidade máxima de itens
106
+ # @option filters [Integer] :offset deslocamento da página
107
+ # @return [Hash] sugestões de procedimentos
108
+ # @raise [BrasilAPI::BadRequest] quando a BrasilAPI responde 400
109
+ # @raise [BrasilAPI::NotFound] quando a BrasilAPI responde 404
110
+ # @raise [BrasilAPI::ServerError] quando a BrasilAPI responde 5xx
111
+ # @raise [BrasilAPI::Timeout] quando a requisição estoura o tempo limite
112
+ # @raise [BrasilAPI::Error] em outras respostas de erro
113
+ # @example
114
+ # BrasilAPI::TUSS.autocomplete(query: "cons", limit: 5)
115
+ # @see https://brasilapi.com.br/docs#tag/TUSS
116
+ def autocomplete(**filters)
117
+ get("/tuss/v1/autocomplete", translate(filters, PARAMS))
118
+ end
119
+ end
120
+ end
121
+ end
@@ -1,5 +1,11 @@
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
4
- VERSION = "0.7.0"
9
+ # Versão publicada da gem, no formato +MAJOR.MINOR.PATCH+.
10
+ VERSION = "0.9.0"
5
11
  end
data/lib/brasil_api.rb CHANGED
@@ -1,6 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Cliente Ruby da {https://brasilapi.com.br BrasilAPI}.
4
+ #
5
+ # Cada família de endpoint é uma classe com métodos de classe.
6
+ #
7
+ # @example Bancos participantes do STR
8
+ # BrasilAPI::Bank.all
9
+ # @see https://brasilapi.com.br/docs
10
+ module BrasilAPI
11
+ end
12
+
3
13
  require_relative "brasil_api/version"
14
+ require_relative "brasil_api/configuration"
15
+ require_relative "brasil_api/error"
4
16
  require_relative "brasil_api/base"
5
17
  require_relative "brasil_api/address"
6
18
  require_relative "brasil_api/bank"
@@ -15,8 +27,16 @@ require_relative "brasil_api/ncm"
15
27
  require_relative "brasil_api/pix"
16
28
  require_relative "brasil_api/registrobr"
17
29
  require_relative "brasil_api/taxas"
18
-
19
- module BrasilAPI
20
- class Error < StandardError; end
21
- class NotFound < StandardError; end
22
- end
30
+ require_relative "brasil_api/b3"
31
+ require_relative "brasil_api/business_days"
32
+ require_relative "brasil_api/cambio"
33
+ require_relative "brasil_api/cid10"
34
+ require_relative "brasil_api/cpf"
35
+ require_relative "brasil_api/ddd"
36
+ require_relative "brasil_api/geolocation"
37
+ require_relative "brasil_api/hospital"
38
+ require_relative "brasil_api/ibpt"
39
+ require_relative "brasil_api/igpm"
40
+ require_relative "brasil_api/solar"
41
+ require_relative "brasil_api/status"
42
+ require_relative "brasil_api/tuss"
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brasilapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dayvid Emerson
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-04-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: Acesso programático de informações é algo fundamental na comunicação
13
13
  entre sistemas, mas, para nossa surpresa, uma informação tão útil e pública quanto
14
14
  um CEP não consegue ser acessada diretamente por um navegador por conta da API dos
15
- Correios não possuir CORS habilitado. Dado aisso, este projeto experimental tem
16
- como objetivo centralizar e disponibilizar endpoints modernos com baixíssima latência
15
+ Correios não possuir CORS habilitado. Dado isso, este projeto experimental tem como
16
+ objetivo centralizar e disponibilizar endpoints modernos com baixíssima latência
17
17
  utilizando tecnologias como Vercel Smart CDN responsável por fazer o cache das informações
18
18
  em atualmente 23 regiões distribuídas ao longo do mundo (incluindo Brasil). Então
19
19
  não importa o quão devagar for a fonte dos dados, nós queremos disponibilizá-la
@@ -26,6 +26,7 @@ extra_rdoc_files: []
26
26
  files:
27
27
  - ".rspec"
28
28
  - ".rubocop.yml"
29
+ - ".yardopts"
29
30
  - CHANGELOG.md
30
31
  - CODE_OF_CONDUCT.md
31
32
  - Gemfile
@@ -33,22 +34,36 @@ files:
33
34
  - LICENSE.txt
34
35
  - README.md
35
36
  - Rakefile
36
- - brasilapi.gemspec
37
37
  - lib/brasil_api.rb
38
38
  - lib/brasil_api/address.rb
39
+ - lib/brasil_api/b3.rb
39
40
  - lib/brasil_api/bank.rb
40
41
  - lib/brasil_api/base.rb
42
+ - lib/brasil_api/business_days.rb
43
+ - lib/brasil_api/cambio.rb
44
+ - lib/brasil_api/cid10.rb
41
45
  - lib/brasil_api/company.rb
46
+ - lib/brasil_api/configuration.rb
47
+ - lib/brasil_api/cpf.rb
42
48
  - lib/brasil_api/cptec.rb
43
49
  - lib/brasil_api/cvm.rb
50
+ - lib/brasil_api/ddd.rb
51
+ - lib/brasil_api/error.rb
44
52
  - lib/brasil_api/fipe.rb
53
+ - lib/brasil_api/geolocation.rb
45
54
  - lib/brasil_api/holiday.rb
55
+ - lib/brasil_api/hospital.rb
46
56
  - lib/brasil_api/ibge.rb
57
+ - lib/brasil_api/ibpt.rb
58
+ - lib/brasil_api/igpm.rb
47
59
  - lib/brasil_api/isbn.rb
48
60
  - lib/brasil_api/ncm.rb
49
61
  - lib/brasil_api/pix.rb
50
62
  - lib/brasil_api/registrobr.rb
63
+ - lib/brasil_api/solar.rb
64
+ - lib/brasil_api/status.rb
51
65
  - lib/brasil_api/taxas.rb
66
+ - lib/brasil_api/tuss.rb
52
67
  - lib/brasil_api/version.rb
53
68
  - lib/brasilapi.rb
54
69
  homepage: https://brasilapi.com.br
@@ -58,7 +73,9 @@ metadata:
58
73
  homepage_uri: https://brasilapi.com.br
59
74
  source_code_uri: https://github.com/dayvidemerson/brasilapi-rb
60
75
  changelog_uri: https://github.com/dayvidemerson/brasilapi-rb/blob/main/CHANGELOG.md
76
+ documentation_uri: https://rubydoc.info/gems/brasilapi
61
77
  rubygems_mfa_required: 'true'
78
+ github_repo: ssh://github.com/dayvidemerson/brasilapi-rb
62
79
  rdoc_options: []
63
80
  require_paths:
64
81
  - lib
@@ -66,14 +83,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
83
  requirements:
67
84
  - - ">="
68
85
  - !ruby/object:Gem::Version
69
- version: 2.6.0
86
+ version: 3.3.0
70
87
  required_rubygems_version: !ruby/object:Gem::Requirement
71
88
  requirements:
72
89
  - - ">="
73
90
  - !ruby/object:Gem::Version
74
91
  version: '0'
75
92
  requirements: []
76
- rubygems_version: 3.6.2
93
+ rubygems_version: 3.6.9
77
94
  specification_version: 4
78
95
  summary: Cliente desenvolvido em Ruby para o consumo da Brasil API que permite buscar
79
96
  informações públicas referentes ao Brasil de modo eficiente e simplificado.
data/brasilapi.gemspec DELETED
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/brasil_api/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "brasilapi"
7
- spec.version = BrasilAPI::VERSION
8
- spec.authors = ["Dayvid Emerson"]
9
- spec.email = ["dayvidemerson96@gmail.com"]
10
-
11
- spec.summary = "Cliente desenvolvido em Ruby para o consumo da Brasil API que permite buscar informações públicas " \
12
- "referentes ao Brasil de modo eficiente e simplificado."
13
-
14
- spec.description = "Acesso programático de informações é algo fundamental na comunicação entre sistemas, mas, para " \
15
- "nossa surpresa, uma informação tão útil e pública quanto um CEP não consegue ser acessada " \
16
- "diretamente por um navegador por conta da API dos Correios não possuir CORS habilitado. Dado a" \
17
- "isso, este projeto experimental tem como objetivo centralizar e disponibilizar endpoints " \
18
- "modernos com baixíssima latência utilizando tecnologias como Vercel Smart CDN responsável por " \
19
- "fazer o cache das informações em atualmente 23 regiões distribuídas ao longo do mundo " \
20
- "(incluindo Brasil). Então não importa o quão devagar for a fonte dos dados, nós queremos " \
21
- "disponibilizá-la da forma mais rápida e moderna possível."
22
-
23
- spec.homepage = "https://brasilapi.com.br"
24
- spec.license = "MIT"
25
- spec.required_ruby_version = ">= 2.6.0"
26
-
27
- spec.metadata["homepage_uri"] = spec.homepage
28
- spec.metadata["source_code_uri"] = "https://github.com/dayvidemerson/brasilapi-rb"
29
- spec.metadata["changelog_uri"] = "https://github.com/dayvidemerson/brasilapi-rb/blob/main/CHANGELOG.md"
30
- spec.metadata["rubygems_mfa_required"] = "true"
31
-
32
- # Specify which files should be added to the gem when it is released.
33
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
34
- spec.files = Dir.chdir(__dir__) do
35
- `git ls-files -z`.split("\x0").reject do |f|
36
- (File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor])
37
- end
38
- end
39
- spec.bindir = "exe"
40
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
41
- spec.require_paths = ["lib"]
42
- end