ibge-ruby 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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