ibge-ruby 1.0.2

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.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +3 -0
  5. data/Gemfile.lock +79 -0
  6. data/README.md +155 -0
  7. data/Rakefile +1 -0
  8. data/ibge-ruby.gemspec +28 -0
  9. data/lib/ibge/distrito.rb +179 -0
  10. data/lib/ibge/mesorregiao.rb +92 -0
  11. data/lib/ibge/microrregiao.rb +110 -0
  12. data/lib/ibge/municipio.rb +164 -0
  13. data/lib/ibge/pais.rb +53 -0
  14. data/lib/ibge/regiao.rb +55 -0
  15. data/lib/ibge/regiao_imediata.rb +110 -0
  16. data/lib/ibge/regiao_intermediaria.rb +92 -0
  17. data/lib/ibge/subdistrito.rb +160 -0
  18. data/lib/ibge/uf.rb +73 -0
  19. data/lib/ibge/utils.rb +7 -0
  20. data/lib/ibge/version.rb +3 -0
  21. data/lib/ibge.rb +18 -0
  22. data/spec/lib/ibge/distrito_spec.rb +250 -0
  23. data/spec/lib/ibge/mesorregiao_spec.rb +144 -0
  24. data/spec/lib/ibge/microrregiao_spec.rb +166 -0
  25. data/spec/lib/ibge/municipio_spec.rb +228 -0
  26. data/spec/lib/ibge/pais_spec.rb +62 -0
  27. data/spec/lib/ibge/regiao_imediata_spec.rb +162 -0
  28. data/spec/lib/ibge/regiao_intermediaria_spec.rb +140 -0
  29. data/spec/lib/ibge/regiao_spec.rb +90 -0
  30. data/spec/lib/ibge/subdistrito_spec.rb +228 -0
  31. data/spec/lib/ibge/uf_spec.rb +130 -0
  32. data/spec/spec_helper.rb +28 -0
  33. data/spec/vcr_cassettes/distrito/distritos_por_id_230440005.yml +55 -0
  34. data/spec/vcr_cassettes/distrito/distritos_por_id_230440005_230370905.yml +47 -0
  35. data/spec/vcr_cassettes/distrito/distritos_por_mesorregiao_2303.yml +47 -0
  36. data/spec/vcr_cassettes/distrito/distritos_por_mesorregiao_2303_2304.yml +47 -0
  37. data/spec/vcr_cassettes/distrito/distritos_por_microrregiao_23016.yml +47 -0
  38. data/spec/vcr_cassettes/distrito/distritos_por_microrregiao_23016_23017.yml +47 -0
  39. data/spec/vcr_cassettes/distrito/distritos_por_municipio_2307254.yml +53 -0
  40. data/spec/vcr_cassettes/distrito/distritos_por_municipio_2307254_2302206.yml +47 -0
  41. data/spec/vcr_cassettes/distrito/distritos_por_regiao_NE.yml +47 -0
  42. data/spec/vcr_cassettes/distrito/distritos_por_regiao_N_NE.yml +47 -0
  43. data/spec/vcr_cassettes/distrito/distritos_por_regiao_imediata_230001.yml +47 -0
  44. data/spec/vcr_cassettes/distrito/distritos_por_regiao_imediata_230001_230002.yml +47 -0
  45. data/spec/vcr_cassettes/distrito/distritos_por_regiao_intermediaria_2301.yml +47 -0
  46. data/spec/vcr_cassettes/distrito/distritos_por_regiao_intermediaria_2301_2302.yml +47 -0
  47. data/spec/vcr_cassettes/distrito/distritos_por_uf_BA_CE.yml +47 -0
  48. data/spec/vcr_cassettes/distrito/distritos_por_uf_CE.yml +51 -0
  49. data/spec/vcr_cassettes/distrito/obter_distritos.yml +55 -0
  50. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_id_2303.yml +47 -0
  51. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_id_2303_2304.yml +47 -0
  52. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_regiao_NE.yml +53 -0
  53. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_regiao_N_NE.yml +47 -0
  54. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_uf_BA_CE.yml +47 -0
  55. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_uf_CE.yml +49 -0
  56. data/spec/vcr_cassettes/mesorregiao/obter_mesorregioes.yml +55 -0
  57. data/spec/vcr_cassettes/microrregiao/microrregioes_por_id_23016.yml +47 -0
  58. data/spec/vcr_cassettes/microrregiao/microrregioes_por_id_23016_23017.yml +47 -0
  59. data/spec/vcr_cassettes/microrregiao/microrregioes_por_mesorregiao_2303.yml +55 -0
  60. data/spec/vcr_cassettes/microrregiao/microrregioes_por_mesorregiao_2303_2304.yml +47 -0
  61. data/spec/vcr_cassettes/microrregiao/microrregioes_por_regiao_NE.yml +47 -0
  62. data/spec/vcr_cassettes/microrregiao/microrregioes_por_regiao_N_NE.yml +47 -0
  63. data/spec/vcr_cassettes/microrregiao/microrregioes_por_uf_BA_CE.yml +47 -0
  64. data/spec/vcr_cassettes/microrregiao/microrregioes_por_uf_CE.yml +53 -0
  65. data/spec/vcr_cassettes/microrregiao/obter_microrregioes.yml +53 -0
  66. data/spec/vcr_cassettes/municipio/municipios_por_id_2307254.yml +53 -0
  67. data/spec/vcr_cassettes/municipio/municipios_por_id_2307254_2302206.yml +47 -0
  68. data/spec/vcr_cassettes/municipio/municipios_por_mesorregiao_2303.yml +47 -0
  69. data/spec/vcr_cassettes/municipio/municipios_por_mesorregiao_2303_2304.yml +47 -0
  70. data/spec/vcr_cassettes/municipio/municipios_por_microrregiao_23016.yml +47 -0
  71. data/spec/vcr_cassettes/municipio/municipios_por_microrregiao_23016_23017.yml +47 -0
  72. data/spec/vcr_cassettes/municipio/municipios_por_regiao_NE.yml +47 -0
  73. data/spec/vcr_cassettes/municipio/municipios_por_regiao_N_NE.yml +47 -0
  74. data/spec/vcr_cassettes/municipio/municipios_por_regiao_imediata_230001.yml +47 -0
  75. data/spec/vcr_cassettes/municipio/municipios_por_regiao_imediata_230001_230002.yml +47 -0
  76. data/spec/vcr_cassettes/municipio/municipios_por_regiao_intermediaria_2301.yml +47 -0
  77. data/spec/vcr_cassettes/municipio/municipios_por_regiao_intermediaria_2301_2302.yml +47 -0
  78. data/spec/vcr_cassettes/municipio/municipios_por_uf_BA_CE.yml +47 -0
  79. data/spec/vcr_cassettes/municipio/municipios_por_uf_CE.yml +51 -0
  80. data/spec/vcr_cassettes/municipio/obter_municipios.yml +51 -0
  81. data/spec/vcr_cassettes/pais/obter_paises.yml +53 -0
  82. data/spec/vcr_cassettes/pais/paises_por_identificador_76.yml +53 -0
  83. data/spec/vcr_cassettes/pais/paises_por_identificador_76_300.yml +47 -0
  84. data/spec/vcr_cassettes/regiao/obter_regioes.yml +53 -0
  85. data/spec/vcr_cassettes/regiao/regioes_por_identificador_NE.yml +48 -0
  86. data/spec/vcr_cassettes/regiao/regioes_por_identificador_N_NE.yml +48 -0
  87. data/spec/vcr_cassettes/regiao_imediata/obter_regioes_imediatas.yml +53 -0
  88. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_id_230001.yml +47 -0
  89. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_id_230001_230002.yml +47 -0
  90. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_intermediaria_2301.yml +47 -0
  91. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_intermediaria_2301_2302.yml +47 -0
  92. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_regiao_NE.yml +49 -0
  93. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_regiao_N_NE.yml +49 -0
  94. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_uf_BA_CE.yml +47 -0
  95. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_uf_CE.yml +53 -0
  96. data/spec/vcr_cassettes/regiao_intermediaria/obter_regioes_intermediarias.yml +53 -0
  97. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_id_2301.yml +47 -0
  98. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_id_2301_2302.yml +47 -0
  99. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_regiao_NE.yml +47 -0
  100. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_regiao_N_NE.yml +47 -0
  101. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_uf_BA_CE.yml +47 -0
  102. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_uf_CE.yml +47 -0
  103. data/spec/vcr_cassettes/subdistrito/obter_subdistritos.yml +53 -0
  104. data/spec/vcr_cassettes/subdistrito/subdistritos_por_distrito_230440005.yml +47 -0
  105. data/spec/vcr_cassettes/subdistrito/subdistritos_por_distrito_230440005_230370905.yml +47 -0
  106. data/spec/vcr_cassettes/subdistrito/subdistritos_por_id_23044000512.yml +49 -0
  107. data/spec/vcr_cassettes/subdistrito/subdistritos_por_id_23044000512_23044006511.yml +47 -0
  108. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_23016.yml +46 -0
  109. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_23016_23017.yml +46 -0
  110. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_2303.yml +47 -0
  111. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_2303_2304.yml +47 -0
  112. data/spec/vcr_cassettes/subdistrito/subdistritos_por_microrregiao_23016.yml +47 -0
  113. data/spec/vcr_cassettes/subdistrito/subdistritos_por_microrregiao_23016_23017.yml +47 -0
  114. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2304400.yml +55 -0
  115. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2304400_2927408.yml +47 -0
  116. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2307254.yml +46 -0
  117. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2307254_2302206.yml +46 -0
  118. data/spec/vcr_cassettes/subdistrito/subdistritos_por_regiao_NE.yml +47 -0
  119. data/spec/vcr_cassettes/subdistrito/subdistritos_por_regiao_N_NE.yml +47 -0
  120. data/spec/vcr_cassettes/subdistrito/subdistritos_por_uf_BA_CE.yml +47 -0
  121. data/spec/vcr_cassettes/subdistrito/subdistritos_por_uf_CE.yml +53 -0
  122. data/spec/vcr_cassettes/uf/obter_ufs.yml +51 -0
  123. data/spec/vcr_cassettes/uf/ufs_por_identificador_BA_CE.yml +47 -0
  124. data/spec/vcr_cassettes/uf/ufs_por_identificador_CE.yml +55 -0
  125. data/spec/vcr_cassettes/uf/ufs_por_regiao_N.yml +53 -0
  126. data/spec/vcr_cassettes/uf/ufs_por_regiao_N_NE.yml +47 -0
  127. metadata +384 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4c489ef9667211b1e342b3518e11003253410eb2b613e44c02ff7772d5222ab4
4
+ data.tar.gz: e031efd350860c4643af376f296e43589584abb8378ce0ff2a7709c93f7fdbd1
5
+ SHA512:
6
+ metadata.gz: 4a163369d05c8b59b8e458dd84195540229e516d3240b8236e85b802a837b60dc92c4cb308dd3b2311832a8d211875c46a883420dee35ede5314cb94455fd26c
7
+ data.tar.gz: 6e33b495084523a3203ffd6152ad074ac9f40874dee02565e9dcc05563627c5dd971de8721321a2316a3d230436db2a040ff56f235723457cb5d2e3e8d575b60
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ coverage
2
+ .byebug_history
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format documentation
3
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,79 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ibge-ruby (1.0.0)
5
+ rest-client (~> 2.0.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.8.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
12
+ byebug (11.1.3)
13
+ coderay (1.1.3)
14
+ crack (0.4.5)
15
+ rexml
16
+ diff-lcs (1.5.0)
17
+ docile (1.4.0)
18
+ domain_name (0.5.20190701)
19
+ unf (>= 0.0.5, < 1.0.0)
20
+ hashdiff (1.0.1)
21
+ http-cookie (1.0.4)
22
+ domain_name (~> 0.5)
23
+ method_source (1.0.0)
24
+ mime-types (3.4.1)
25
+ mime-types-data (~> 3.2015)
26
+ mime-types-data (3.2022.0105)
27
+ netrc (0.11.0)
28
+ pry (0.14.1)
29
+ coderay (~> 1.1)
30
+ method_source (~> 1.0)
31
+ public_suffix (4.0.6)
32
+ rest-client (2.0.2)
33
+ http-cookie (>= 1.0.2, < 2.0)
34
+ mime-types (>= 1.16, < 4.0)
35
+ netrc (~> 0.8)
36
+ rexml (3.2.5)
37
+ rspec (3.10.0)
38
+ rspec-core (~> 3.10.0)
39
+ rspec-expectations (~> 3.10.0)
40
+ rspec-mocks (~> 3.10.0)
41
+ rspec-core (3.10.1)
42
+ rspec-support (~> 3.10.0)
43
+ rspec-expectations (3.10.1)
44
+ diff-lcs (>= 1.2.0, < 2.0)
45
+ rspec-support (~> 3.10.0)
46
+ rspec-mocks (3.10.2)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.10.0)
49
+ rspec-support (3.10.3)
50
+ simplecov (0.21.2)
51
+ docile (~> 1.1)
52
+ simplecov-html (~> 0.11)
53
+ simplecov_json_formatter (~> 0.1)
54
+ simplecov-html (0.12.3)
55
+ simplecov_json_formatter (0.1.3)
56
+ unf (0.1.4)
57
+ unf_ext
58
+ unf_ext (0.0.8)
59
+ vcr (3.0.3)
60
+ webmock (3.14.0)
61
+ addressable (>= 2.8.0)
62
+ crack (>= 0.3.2)
63
+ hashdiff (>= 0.4.0, < 2.0.0)
64
+
65
+ PLATFORMS
66
+ x86_64-linux
67
+
68
+ DEPENDENCIES
69
+ bundler (~> 2.0)
70
+ byebug (~> 11.1.3)
71
+ ibge-ruby!
72
+ pry (~> 0.14.1)
73
+ rspec (~> 3.10.0)
74
+ simplecov (~> 0.18)
75
+ vcr (~> 3.0)
76
+ webmock (~> 3.14.0)
77
+
78
+ BUNDLED WITH
79
+ 2.2.21
data/README.md ADDED
@@ -0,0 +1,155 @@
1
+ # IBGE Ruby
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/ibge-ruby.svg)](http://badge.fury.io/rb/ibge-ruby)
4
+
5
+ A gem ibge-ruby permite você integrar a sua aplicação Ruby on Rails com todos os [serviços de localidade](https://servicodados.ibge.gov.br/api/docs/localidades) fornecidos pelo IBGE de maneira simples e rápida.
6
+
7
+ ## Instalação
8
+
9
+ Adicione essa linha no Gemfile da sua aplicação:
10
+
11
+ gem 'ibge-ruby'
12
+
13
+ E execute:
14
+
15
+ $ bundle
16
+
17
+ Ou instale diretamente com o comando:
18
+
19
+ $ gem install ibge-ruby
20
+
21
+ ## Métodos
22
+
23
+ Cada link direciona para a documentação do IBGE com a descrição do método, entrada e saída. Ao lado é a referência de como utilizá-lo com a gem.
24
+
25
+ * __Distritos__
26
+ * [Distritos](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-distritosGet) - `IBGE::Distrito.obter_distritos`
27
+ * [Distritos por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-distritosIdGet) - `IBGE::Distrito.distritos_por_id(ids)`
28
+ * [Distritos por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-estadosUFDistritosGet) - `IBGE::Distrito.distritos_por_uf(ufs)`
29
+ * [Distritos por mesorregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-mesorregioesMesorregiaoDistritosGet) - `IBGE::Distrito.distritos_por_mesorregiao(mesorregioes)`
30
+ * [Distritos por microrregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-microrregioesMicrorregiaoDistritosGet) - `IBGE::Distrito.distritos_por_microrregiao(microrregioes)`
31
+ * [Distritos por município](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-municipiosMunicipioDistritosGet) - `IBGE::Distrito.distritos_por_municipio(municipios)`
32
+ * [Distritos por região imediata](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-regioesImediatasRegiaoImediataDistritosGet) - `IBGE::Distrito.distritos_por_regiao_imediata(regioes)`
33
+ * [Distritos por região intermediária](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-regioesIntermediariasRegiaoIntermediariaDistritosGet) - `IBGE::Distrito.distritos_por_regiao_intermediaria(regioes)`
34
+ * [Distritos por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-Distritos-regioesMacrorregiaoDistritosGet) - `IBGE::Distrito.distritos_por_regiao(regioes)`
35
+
36
+ * __Mesorregiões__
37
+ * [Mesorregiões](https://servicodados.ibge.gov.br/api/docs/localidades#api-Mesorregioes-mesorregioesGet) - `IBGE::Mesorregiao.obter_mesorregioes`
38
+ * [Mesorregiões por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Mesorregioes-mesorregioesMesorregiaoGet) - `IBGE::Mesorregiao.mesorregioes_por_id(ids)`
39
+ * [Mesorregiões por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-Mesorregioes-estadosUFMesorregioesGet) - `IBGE::Mesorregiao.mesorregioes_por_uf(ufs)`
40
+ * [Mesorregiões por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-Mesorregioes-regioesMacrorregiaoMesorregioesGet) - `IBGE::Mesorregiao.mesorregioes_por_regiao(regioes)`
41
+
42
+ * __Microrregiões__
43
+ * [Microrregiões](https://servicodados.ibge.gov.br/api/docs/localidades#api-Microrregioes-microrregioesGet) - `IBGE::Microrregiao.obter_microrregioes`
44
+ * [Microrregiões por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Microrregioes-microrregioesMicrorregiaoGet) - `IBGE::Microrregiao.microrregioes_por_id(ids)`
45
+ * [Microrregiões por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-Microrregioes-estadosUFMicrorregioesGet) - `IBGE::Microrregiao.microrregioes_por_uf(ufs)`
46
+ * [Microrregiões por mesorregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Microrregioes-mesorregioesMesorregiaoMicrorregioesGet) - `IBGE::Microrregiao.microrregioes_por_mesorregiao(mesorregioes)`
47
+ * [Microrregiões por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-Microrregioes-regioesMacrorregiaoMicrorregioesGet) - `IBGE::Microrregiao.microrregioes_por_masorregiao(masorregioes)`
48
+
49
+ * __Municípios__
50
+ * [Municípios](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-municipiosGet) - `IBGE::Municipio.obter_municipios`
51
+ * [Municípios por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-municipiosMunicipioGet) - `IBGE::Municipio.municipios_por_id(ids)`
52
+ * [Municípios por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-estadosUFMunicipiosGet) - `IBGE::Municipio.municipios_por_uf(ufs)`
53
+ * [Municípios por mesorregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-mesorregioesMesorregiaoMunicipiosGet) - `IBGE::Municipio.municipios_por_mesorregiao(mesorregioes)`
54
+ * [Municípios por microrregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-microrregioesMicrorregiaoMunicipiosGet) - `IBGE::Municipio.municipios_por_microrregiao(microrregioes)`
55
+ * [Municípios por região imediata](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-regioesImediatasRegiaoImediataMunicipiosGet) - `IBGE::Municipio.municipios_por_regiao_imediata(regioes)`
56
+ * [Municípios por região intermediária](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-regioesIntermediariasRegiaoIntermediariaMunicipiosGet) - `IBGE::Municipio.municipios_por_regiao_intermediaria(regioes)`
57
+ * [Municípios por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-Municipios-regioesMacrorregiaoMunicipiosGet) - `IBGE::Municipio.municipios_por_regiao(regioes)`
58
+
59
+ * __Países__
60
+ * [Países](https://servicodados.ibge.gov.br/api/docs/localidades#api-Paises-paisesGet) - `IBGE::Pais.obter_paises`
61
+ * [Países por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Paises-paisesPaisGet) - `IBGE::Pais.paises_por_identificador(ids)`
62
+
63
+ * __Regiões__
64
+ * [Regiões](https://servicodados.ibge.gov.br/api/docs/localidades#api-Regioes-regioesGet) - `IBGE::Regiao.obter_regioes`
65
+ * [Regiões por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Regioes-regioesMacrorregiaoGet) - `IBGE::Regiao.regioes_por_identificador(ids)`
66
+
67
+ * __Regiões Imediatas__
68
+ * [Regiões imediatas](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesImediatas-regioesImediatasGet) - `IBGE::RegiaoImediata.obter_regioes_imediatas`
69
+ * [Regiões imediatas por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesImediatas-regioesImediatasRegiaoImediataGet) - `IBGE::RegiaoImediata.regioes_imediatas_por_id(ids)`
70
+ * [Regiões imediatas por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesImediatas-estadosUFRegioesImediatasGet) - `IBGE::RegiaoImediata.regioes_imediatas_por_uf(ufs)`
71
+ * [Regiões imediatas por regiões intermediárias](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesImediatas-regioesIntermediariasRegiaoIntermediariaRegioesImediatasGet) - `IBGE::RegiaoImediata.regioes_imediatas_por_intermediaria(regioes)`
72
+ * [Regiões imediatas por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesImediatas-regioesMacrorregiaoRegioesImediatasGet) - `IBGE::RegiaoImediata.regioes_imediatas_por_regiao(regioes)`
73
+
74
+ * __Regiões Intermediárias__
75
+ * [Regiões intermediárias](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesIntermediarias-regioesIntermediariasGet) - `IBGE::RegiaoIntermediaria.obter_regioes_intermediarias`
76
+ * [Regiões intermediárias por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesIntermediarias-regioesIntermediariasRegiaoIntermediariaGet) - `IBGE::RegiaoIntermediaria.regioes_intermediarias_por_id(ids)`
77
+ * [Regiões intermediárias por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesIntermediarias-estadosUFRegioesIntermediariasGet) - `IBGE::RegiaoIntermediaria.regioes_intermediarias_por_uf(ufs)`
78
+ * [Regiões intermediárias por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-RegioesIntermediarias-regioesMacrorregiaoRegioesIntermediariasGet) - `IBGE::RegiaoIntermediaria.regioes_intermediarias_por_regiao(regioes)`
79
+
80
+ * __Subdistritos__
81
+ * [Subdistritos](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-subdistritosGet) - `IBGE::Subdistrito.obter_subdistritos`
82
+ * [Subdistritos por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-subdistritosIdGet) - `IBGE::Subdistrito.subdistritos_por_id(ids)`
83
+ * [Subdistritos por UF](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-estadosUFSubdistritosGet) - `IBGE::Subdistrito.subdistritos_por_uf(ufs)`
84
+ * [Subdistritos por distrito](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-distritosDistritoSubdistritosGet) - `IBGE::Subdistrito.subdistritos_por_distrito(distritos)`
85
+ * [Subdistritos por mesorregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-mesorregioesMesorregiaoSubdistritosGet) - `IBGE::Subdistrito.subdistritos_por_mesorregiao(mesorregioes)`
86
+ * [Subdistritos por microrregião](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-microrregioesMicrorregiaoSubdistritosGet) - `IBGE::Subdistrito.subdistritos_por_microrregiao(microrregioes)`
87
+ * [Subdistritos por município](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-municipiosMunicipioSubdistritosGet) - `IBGE::Subdistrito.subdistritos_por_municipio(municipios)`
88
+ * [Subdistritos por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-Subdistritos-regioesMacrorregiaoSubdistritosGet) - `IBGE::Subdistrito.subdistritos_por_regiao(regioes)`
89
+
90
+ * __UFs__
91
+ * [UFs](https://servicodados.ibge.gov.br/api/docs/localidades#api-UFs-estadosGet) - `IBGE::UF.obter_ufs`
92
+ * [UF por identificador](https://servicodados.ibge.gov.br/api/docs/localidades#api-UFs-estadosUFGet) - `IBGE::UF.ufs_por_identificador(ids)`
93
+ * [UFs por região](https://servicodados.ibge.gov.br/api/docs/localidades#api-UFs-regioesMacrorregiaoEstadosGet) - `IBGE::UF.ufs_por_regiao(regioes)`
94
+
95
+ ### Observações
96
+
97
+ 1. Nas referências dos serviços, é possível enviar um ou mais parâmetros delimitados pelo caractere | (pipe).
98
+ Na gem, ao utilizar serviços em que é possível enviar vários parâmetros (quase todos), utilize o formato de **array**.
99
+
100
+ ❌ **Serviço IBGE**: `1|2|3`
101
+
102
+ ✅ **Gem IBGE Ruby**: `[1, 2, 3]` ou `['1', '2', '3']`.
103
+
104
+ <sub>* Em alguns casos também é possível passar siglas. Verifique a seção Pesquisa por identificador (ID), sigla ou array de IDs/siglas.</sub>
105
+
106
+ 2. No momento, esta gem não oferece suporte aos query parameters `orderBy` e `view`. Contudo, no Ruby, é possível simular o `orderBy` da seguinte forma:
107
+
108
+ ```ruby
109
+ # Sem order by
110
+ regioes = IBGE::Regiao.obter_regioes.map(&:nome) #=> ['Norte', 'Nordeste', 'Sudeste', 'Sul', 'Centro-Oeste']
111
+
112
+ # Comportamento similar ao orderBy com Ruby
113
+ regioes = IBGE::Regiao.obter_regioes.sort_by(&:nome).map(&:nome) #=> ['Centro-Oeste', 'Nordeste', 'Norte', 'Sudeste', 'Sul']
114
+ ```
115
+
116
+ ## Utilização
117
+
118
+ Abaixo estão alguns exemplos de utilização da gem. Verifique a [documentação](https://www.rubydoc.info/gems/ibge-ruby/main) para uma referência mais completa.
119
+
120
+ ### Países
121
+
122
+ ```ruby
123
+ require 'ibge'
124
+
125
+ paises = IBGE::Pais.obter_paises
126
+ paises.map(&:nome) #=> ['Afeganistão', 'Albânia', 'Argélia', 'Andorra', 'Angola'...]
127
+ ```
128
+
129
+ ### Regiões
130
+
131
+ ```ruby
132
+ regioes = IBGE::Regiao.obter_regioes
133
+ regioes.map(&:nome) #=> ['Norte', 'Nordeste', 'Sudeste', 'Sul', 'Centro-Oeste']
134
+ regioes.first #=> #<IBGE::Regiao:0x0000555f7e83de38 @id=1, @nome="Norte", @sigla="N">
135
+ ```
136
+
137
+ ### Pesquisa por identificador (ID), sigla ou array de IDs/siglas
138
+
139
+ Em qualquer módulo que possua um método que faça referência aos recursos de **Região** ou **UFs**, é possível pesquisar pelo ID, sigla ou um array de IDs/siglas.
140
+
141
+ ```ruby
142
+ IBGE::Municipio.municipios_por_regiao('NE') #=> mesma coisa de IBGE::Municipio.municipios_por_regiao(2)
143
+ IBGE::Municipio.municipios_por_regiao(['N', 'NE']) #=> mesma coisa de IBGE::Municipio.municipios_por_regiao([1, 2])
144
+
145
+ IBGE::Distrito.distritos_por_uf('CE') #=> mesma coisa de IBGE::Distrito.distritos_por_uf(23)
146
+ IBGE::Distrito.distritos_por_uf(['BA', 'CE]) #=> mesma coisa de IBGE::Distrito.distritos_por_uf([29, 23])
147
+ ```
148
+
149
+ ## Contribuindo
150
+
151
+ 1. Faça um fork
152
+ 2. Crie uma branch com a funcionalidade (`git checkout -b nova_funcionalidade`)
153
+ 3. Faça um commit das suas mudanças (`git commit -am "[add] nova funcionalidade"`)
154
+ 4. Faça um push para a branch (`git push origin nova_funcionalidade`)
155
+ 5. Crie um pull request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/ibge-ruby.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'ibge/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'ibge-ruby'
7
+ spec.version = IBGE::VERSION
8
+ spec.summary = 'Wrapper do serviço do IBGE para Ruby.'
9
+ spec.authors = ["Andréa Alencar"]
10
+ spec.email = 'andreaflether@gmail.com'
11
+ spec.homepage = 'https://github.com/andreaflether/ibge-ruby'
12
+ spec.license = 'MIT'
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.test_files = spec.files.grep(/^spec\//)
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.add_development_dependency 'pry', '~> 0.14.1'
19
+ spec.add_development_dependency 'bundler', '~> 2.0'
20
+ spec.add_development_dependency 'byebug', '~> 11.1.3'
21
+
22
+ spec.add_development_dependency 'simplecov', '~> 0.18'
23
+ spec.add_development_dependency 'webmock', '~> 3.14.0'
24
+ spec.add_development_dependency 'rspec', '~> 3.10.0'
25
+ spec.add_development_dependency 'vcr', '~> 3.0'
26
+
27
+ spec.add_dependency 'rest-client', '~> 2.0.2'
28
+ end
@@ -0,0 +1,179 @@
1
+ module IBGE
2
+ class Distrito
3
+ attr_accessor :id, :nome, :municipio
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @municipio = Municipio.new(options['municipio'])
9
+ end
10
+
11
+ # Obtém o conjunto de distritos do Brasil.
12
+ #
13
+ # @return [Array<Distrito>]
14
+ #
15
+ # @example
16
+ # distritos = IBGE::Distrito.obter_distritos
17
+ # distritos.first.nome #=> "Abadia de Goiás"
18
+ def self.obter_distritos
19
+ resposta = RestClient.get("#{BASE_URL}/distritos")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de distritos do Brasil a partir dos respectivos identificadores.
25
+ # Pode ser informado um único ID ou um array de IDs.
26
+ #
27
+ # @param ids [String, Integer, Array] Um ou mais identificadores de distritos.
28
+ # @return [Array<Distrito>]
29
+ #
30
+ # @example
31
+ # distritos = IBGE::Distrito.distritos_por_id(230440005)
32
+ # distritos.first.nome #=> "Fortaleza"
33
+ #
34
+ # distritos = IBGE::Distrito.distritos_por_id([230440005, 230370905])
35
+ def self.distritos_por_id(ids)
36
+ ids = IBGE.formatar(ids)
37
+ resposta = RestClient.get("#{BASE_URL}/distritos/#{ids}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores das Unidades da Federação.
43
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
44
+ #
45
+ # @param ufs [String, Integer, Array]
46
+ # @return [Array<Distrito>]
47
+ #
48
+ # @example
49
+ # distritos = IBGE::Distrito.distritos_por_uf('CE')
50
+ # distritos.last.nome #=> "Quatiguaba"
51
+ #
52
+ # IBGE::Distrito.distritos_por_uf(['BA', 'CE'])
53
+ # IBGE::Distrito.distritos_por_uf(23)
54
+ def self.distritos_por_uf(ufs)
55
+ ufs = IBGE.formatar(ufs)
56
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/distritos")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores das regiões.
62
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
63
+ #
64
+ # @param regioes [String, Integer, Array]
65
+ # @return [Array<Distrito>]
66
+ #
67
+ # @example
68
+ # distritos = IBGE::Distrito.distritos_por_regiao('NE')
69
+ # distritos.last.nome #=> "Zé Doca"
70
+ #
71
+ # IBGE::Distrito.distritos_por_regiao(['NE', 'N'])
72
+ # IBGE::Distrito.distritos_por_regiao([1, 2])
73
+ def self.distritos_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/distritos")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores dos municípios.
81
+ # Pode ser informado um único ID ou um array de IDs.
82
+ #
83
+ # @param municipios [String, Integer, Array]
84
+ # @return [Array<Distrito>]
85
+ #
86
+ # @example
87
+ # distritos = IBGE::Distrito.distritos_por_municipio('2307254')
88
+ # distritos.first.nome #=> "Jijoca de Jericoacoara"
89
+ #
90
+ # distritos = IBGE::Distrito.distritos_por_regiao(["2307254", "2302206"])
91
+ def self.distritos_por_municipio(municipios)
92
+ municipios = IBGE.formatar(municipios)
93
+ resposta = RestClient.get("#{BASE_URL}/municipios/#{municipios}/distritos")
94
+
95
+ tratar_retorno(resposta)
96
+ end
97
+
98
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores das regiões imediatas.
99
+ # Pode ser informado um único ID ou um array de IDs.
100
+ #
101
+ # @param regioes [String, Integer, Array] Um ou mais identificadores de regiões imediatas.
102
+ # @return [Array<Distrito>]
103
+ #
104
+ # @example
105
+ # distritos = IBGE::Distrito.distritos_por_regiao_imediata(230001)
106
+ # distritos.first.nome #=> "Aquiraz"
107
+ #
108
+ # distritos = IBGE::Distrito.distritos_por_regiao_imediata([230001, 230002])
109
+ def self.distritos_por_regiao_imediata(regioes)
110
+ regioes = IBGE.formatar(regioes)
111
+ resposta = RestClient.get("#{BASE_URL}/regioes-imediatas/#{regioes}/distritos")
112
+
113
+ tratar_retorno(resposta)
114
+ end
115
+
116
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores das regiões intermediárias.
117
+ # Pode ser informado um único ID ou um array de IDs.
118
+ #
119
+ # @param regioes [String, Integer, Array] Um ou mais identificadores de regiões intermediárias.
120
+ # @return [Array<Distrito>]
121
+ #
122
+ # @example
123
+ # distritos = IBGE::Distrito.distritos_por_regiao_intermediaria(2301)
124
+ # distritos.first.nome #=> "Acarape"
125
+ #
126
+ # distritos = IBGE::Distrito.distritos_por_regiao_intermediaria([2301, 2302])
127
+ def self.distritos_por_regiao_intermediaria(regioes)
128
+ regioes = IBGE.formatar(regioes)
129
+ resposta = RestClient.get("#{BASE_URL}/regioes-intermediarias/#{regioes}/distritos")
130
+
131
+ tratar_retorno(resposta)
132
+ end
133
+
134
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores das mesorregiões.
135
+ # Pode ser informado um único ID ou um array de IDs.
136
+ #
137
+ # @param mesorregioes [String, Integer, Array] Um ou mais identificadores de mesorregiões.
138
+ # @return [Array<Distrito>]
139
+ #
140
+ # @example
141
+ # distritos = IBGE::Distrito.distritos_por_mesorregiao(2303)
142
+ # distritos.first.nome #=> "Aquiraz"
143
+ #
144
+ # distritos = IBGE::Distrito.distritos_por_mesorregiao([2303, 2304])
145
+ def self.distritos_por_mesorregiao(mesorregioes)
146
+ mesorregioes = IBGE.formatar(mesorregioes)
147
+ resposta = RestClient.get("#{BASE_URL}/mesorregioes/#{mesorregioes}/distritos")
148
+
149
+ tratar_retorno(resposta)
150
+ end
151
+
152
+ # Obtém o conjunto de distritos do Brasil a partir dos identificadores das microrregiões.
153
+ # Pode ser informado um único ID ou um array de IDs.
154
+ #
155
+ # @param microrregioes [String, Integer, Array] Um ou mais identificadores de microrregiões.
156
+ # @return [Array<Distrito>]
157
+ #
158
+ # @example
159
+ # distritos = IBGE::Distrito.distritos_por_microrregiao(23016)
160
+ # distritos.last.nome #=> "Senador Carlos Jereissati"
161
+ #
162
+ # distritos = IBGE::Distrito.distritos_por_microrregiao([23016, 23017])
163
+ def self.distritos_por_microrregiao(microrregioes)
164
+ microrregioes = IBGE.formatar(microrregioes)
165
+ resposta = RestClient.get("#{BASE_URL}/microrregioes/#{microrregioes}/distritos")
166
+
167
+ tratar_retorno(resposta)
168
+ end
169
+
170
+ private
171
+
172
+ def self.tratar_retorno(resposta)
173
+ distritos = JSON.parse(resposta.body)
174
+
175
+ distritos.map { |distrito| Distrito.new(distrito) }
176
+ end
177
+ end
178
+ end
179
+
@@ -0,0 +1,92 @@
1
+ module IBGE
2
+ class Mesorregiao
3
+ attr_accessor :id, :nome, :uf
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @uf = IBGE::UF.new(options['UF'])
9
+ end
10
+
11
+ # Obtém o conjunto de mesorregiões do Brasil.
12
+ #
13
+ # @return [Array<Mesorregiao>]
14
+ #
15
+ # @example
16
+ # mesorregioes = IBGE::Mesorregiao.obter_mesorregioes
17
+ # mesorregioes.first.nome #=> "Madeira-Guaporé"
18
+ def self.obter_mesorregioes
19
+ resposta = RestClient.get("#{BASE_URL}/mesorregioes")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de mesorregiões do Brasil a partir dos identificadores das Unidades da Federação.
25
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
26
+ #
27
+ # @param ufs [String, Integer, Array]
28
+ # @return [Array<Mesorregiao>]
29
+ #
30
+ # @example
31
+ # mesorregioes = IBGE::Mesorregiao.mesorregioes_por_uf('CE')
32
+ # mesorregioes.first.nome #=> "Noroeste Cearense"
33
+ #
34
+ # IBGE::Mesorregiao.mesorregioes_por_uf(['BA', 'CE'])
35
+ # IBGE::Mesorregiao.mesorregioes_por_uf(23)
36
+ def self.mesorregioes_por_uf(ufs)
37
+ ufs = IBGE.formatar(ufs)
38
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/mesorregioes")
39
+
40
+ tratar_retorno(resposta)
41
+ end
42
+
43
+ # Obtém o conjunto de mesorregiões do Brasil a partir dos respectivos identificadores.
44
+ # Pode ser informado um único ID ou um array de IDs.
45
+ #
46
+ # @param ids [String, Integer, Array]
47
+ # @return [Mesorregiao, Array<Mesorregiao>]
48
+ #
49
+ # @example
50
+ # mesorregiao = IBGE::Mesorregiao.mesorregioes_por_id(2303)
51
+ # mesorregiao.nome #=> "Metropolitana de Fortaleza"
52
+ #
53
+ # mesorregioes = IBGE::Mesorregiao.mesorregioes_por_id([2303, 2304])
54
+ def self.mesorregioes_por_id(ids)
55
+ ids = IBGE.formatar(ids)
56
+ resposta = RestClient.get("#{BASE_URL}/mesorregioes/#{ids}")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de mesorregiões do Brasil a partir dos identificadores das regiões.
62
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
63
+ #
64
+ # @param regioes [String, Integer, Array]
65
+ # @return [Array<Mesorregiao>]
66
+ #
67
+ # @example
68
+ # mesorregioes = IBGE::Mesorregiao.mesorregioes_por_regiao('NE')
69
+ # mesorregioes.first.nome #=> "Norte Maranhense"
70
+ #
71
+ # IBGE::Mesorregiao.mesorregioes_por_regiao(['NE', 'N'])
72
+ # IBGE::Mesorregiao.mesorregioes_por_regiao([1, 2])
73
+ def self.mesorregioes_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/mesorregioes")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ private
81
+
82
+ def self.tratar_retorno(resposta)
83
+ mesorregioes = JSON.parse(resposta.body)
84
+
85
+ if mesorregioes.is_a?(Array)
86
+ mesorregioes.map { |mesorregiao| Mesorregiao.new(mesorregiao) }
87
+ else
88
+ Mesorregiao.new(mesorregioes)
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,110 @@
1
+ module IBGE
2
+ class Microrregiao
3
+ attr_accessor :id, :nome, :mesorregiao
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @mesorregiao = Mesorregiao.new(options['mesorregiao'])
9
+ end
10
+
11
+ # Obtém o conjunto de microrregiões do Brasil.
12
+ #
13
+ # @return [Array<Microrregiao>]
14
+ #
15
+ # @example
16
+ # microrregioes = IBGE::Microrregiao.obter_microrregioes
17
+ # microrregioes.first.nome #=> "Porto Velho"
18
+ def self.obter_microrregioes
19
+ resposta = RestClient.get("#{BASE_URL}/microrregioes")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de microrregiões do Brasil a partir dos respectivos identificadores.
25
+ # Pode ser informado um único ID ou um array de IDs.
26
+ #
27
+ # @param ids [String, Integer, Array] Um ou mais identificadores de microrregiões.
28
+ # @return [Microrregiao, Array<Microrregiao>]
29
+ #
30
+ # @example
31
+ # microrregiao = IBGE::Microrregiao.microrregioes_por_id(23015)
32
+ # microrregiao.nome #=> "Cascavel"
33
+ #
34
+ # microrregioes = IBGE::Microrregiao.microrregioes_por_id([23015, 23016])
35
+ def self.microrregioes_por_id(ids)
36
+ ids = IBGE.formatar(ids)
37
+ resposta = RestClient.get("#{BASE_URL}/microrregioes/#{ids}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de microrregiões do Brasil a partir dos identificadores das Unidades da Federação.
43
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
44
+ #
45
+ # @param ufs [String, Integer, Array]
46
+ # @return [Array<Microrregiao>]
47
+ #
48
+ # @example
49
+ # microrregioes = IBGE::Microrregiao.microrregioes_por_uf('CE')
50
+ # microrregioes.first.nome #=> "Litoral de Camocim e Acaraú"
51
+ #
52
+ # IBGE::Microrregiao.microrregioes_por_uf(['BA', 'CE'])
53
+ # IBGE::Microrregiao.microrregioes_por_uf(23)
54
+ def self.microrregioes_por_uf(ufs)
55
+ ufs = IBGE.formatar(ufs)
56
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/microrregioes")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de microrregiões do Brasil a partir dos identificadores das regiões.
62
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
63
+ #
64
+ # @param regioes [String, Integer, Array]
65
+ # @return [Array<Microrregiao>]
66
+ #
67
+ # @example
68
+ # microrregioes = IBGE::Microrregiao.microrregioes_por_regiao('NE')
69
+ # microrregioes.first.nome #=> "Litoral Ocidental Maranhense"
70
+ #
71
+ # IBGE::Microrregiao.microrregioes_por_regiao(['NE', 'N'])
72
+ # IBGE::Microrregiao.microrregioes_por_regiao([1, 2])
73
+ def self.microrregioes_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/microrregioes")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ # Obtém o conjunto de microrregiões do Brasil a partir dos identificadores das mesorregiões.
81
+ # Pode ser informado um único ID ou um array de IDs.
82
+ #
83
+ # @param ids [String, Integer, Array] Um ou mais identificadores de mesorregiões.
84
+ # @return [Microrregiao, Array<Microrregiao>]
85
+ #
86
+ # @example
87
+ # microrregioes = IBGE::Microrregiao.microrregioes_por_mesorregiao(2303)
88
+ # microrregioes.first.nome #=> "Fortaleza"
89
+ #
90
+ # microrregioes = IBGE::Microrregiao.microrregioes_por_mesorregiao([2303, 2304])
91
+ def self.microrregioes_por_mesorregiao(mesorregioes)
92
+ mesorregioes = IBGE.formatar(mesorregioes)
93
+ resposta = RestClient.get("#{BASE_URL}/mesorregioes/#{mesorregioes}/microrregioes")
94
+
95
+ tratar_retorno(resposta)
96
+ end
97
+
98
+ private
99
+
100
+ def self.tratar_retorno(resposta)
101
+ microrregioes = JSON.parse(resposta.body)
102
+
103
+ if microrregioes.is_a?(Array)
104
+ microrregioes.map { |microrregiao| Microrregiao.new(microrregiao) }
105
+ else
106
+ Microrregiao.new(microrregioes)
107
+ end
108
+ end
109
+ end
110
+ end