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
@@ -0,0 +1,164 @@
1
+ module IBGE
2
+ class Municipio
3
+ attr_accessor :id, :nome, :microrregiao
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @microrregiao = Microrregiao.new(options['microrregiao'])
9
+ end
10
+
11
+ # Obtém o conjunto de municípios do Brasil.
12
+
13
+ # @return [Array<Municipio>]
14
+ #
15
+ # @example
16
+ # municipios = IBGE::Municipio.obter_municipios
17
+ # municipios.first.nome #=> "Alta Floresta D'Oeste"
18
+ def self.obter_municipios
19
+ resposta = RestClient.get("#{BASE_URL}/municipios")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de municípios 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 municípios.
28
+ # @return [Municipio, Array<Municipio>]
29
+ #
30
+ # @example
31
+ # municipio = IBGE::Municipio.municipios_por_id(2307254)
32
+ # municipio.nome #=> "Jijoca de Jericoacoara"
33
+ #
34
+ # municipios = IBGE::Municipio.municipios_por_id([2307254, 2302206])
35
+ def self.municipios_por_id(ids)
36
+ ids = IBGE.formatar(ids)
37
+ resposta = RestClient.get("#{BASE_URL}/municipios/#{ids}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de municípios 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<Municipio>]
47
+ #
48
+ # @example
49
+ # municipios = IBGE::Municipio.municipios_por_uf('CE')
50
+ # municipios.first.nome #=> "Abaiara"
51
+ #
52
+ # IBGE::Municipio.municipios_por_uf(['BA', 'CE'])
53
+ # IBGE::Municipio.municipios_por_uf(23)
54
+ def self.municipios_por_uf(ufs)
55
+ ufs = IBGE.formatar(ufs)
56
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/municipios")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de municípios 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<Municipio>]
66
+ #
67
+ # @example
68
+ # municipios = IBGE::Municipio.municipios_por_regiao('NE')
69
+ # municipios.first.nome #=> "Açailândia"
70
+ #
71
+ # IBGE::Municipio.municipios_por_regiao(['NE', 'N'])
72
+ # IBGE::Municipio.municipios_por_regiao([1, 2])
73
+ def self.municipios_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/municipios")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ # Obtém o conjunto de municípios do Brasil a partir dos identificadores das regiões imediatas.
81
+ # Pode ser informado um único ID ou um array de IDs.
82
+ #
83
+ # @param regioes [String, Integer, Array] Um ou mais identificadores de regiões imediatas.
84
+ # @return [Array<Municipio>]
85
+ #
86
+ # @example
87
+ # municipios = IBGE::Municipio.municipios_por_regiao_imediata(230001)
88
+ # municipios.first.nome #=> "Aquiraz"
89
+ #
90
+ # municipios = IBGE::Municipio.municipios_por_regiao_imediata([230001, 230002])
91
+ def self.municipios_por_regiao_imediata(regioes)
92
+ regioes = IBGE.formatar(regioes)
93
+ resposta = RestClient.get("#{BASE_URL}/regioes-imediatas/#{regioes}/municipios")
94
+
95
+ tratar_retorno(resposta)
96
+ end
97
+
98
+ # Obtém o conjunto de municípios do Brasil a partir dos identificadores das regiões intermediárias.
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 intermediárias.
102
+ # @return [Array<Municipio>]
103
+ #
104
+ # @example
105
+ # municipios = IBGE::Municipio.municipios_por_regiao_intermediaria(2301)
106
+ # municipios.first.nome #=> "Acarape"
107
+ #
108
+ # municipios = IBGE::Municipio.municipios_por_regiao_intermediaria([2301, 2302])
109
+ def self.municipios_por_regiao_intermediaria(regioes)
110
+ regioes = IBGE.formatar(regioes)
111
+ resposta = RestClient.get("#{BASE_URL}/regioes-intermediarias/#{regioes}/municipios")
112
+
113
+ tratar_retorno(resposta)
114
+ end
115
+
116
+ # Obtém o conjunto de municípios do Brasil a partir dos identificadores das microrregiões.
117
+ # Pode ser informado um único ID ou um array de IDs.
118
+ #
119
+ # @param microrregioes [String, Integer, Array] Um ou mais identificadores de microrregiões.
120
+ # @return [Array<Municipio>]
121
+ #
122
+ # @example
123
+ # municipios = IBGE::Municipio.municipios_por_microrregiao(23016)
124
+ # municipios.last.nome #=> "Pacatuba"
125
+ #
126
+ # municipios = IBGE::Municipio.municipios_por_microrregiao([23016, 23017])
127
+ def self.municipios_por_microrregiao(microrregioes)
128
+ microrregioes = IBGE.formatar(microrregioes)
129
+ resposta = RestClient.get("#{BASE_URL}/microrregioes/#{microrregioes}/municipios")
130
+
131
+ tratar_retorno(resposta)
132
+ end
133
+
134
+ # Obtém o conjunto de municípios 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<Municipio>]
139
+ #
140
+ # @example
141
+ # municipios = IBGE::Municipio.municipios_por_mesorregiao(2303)
142
+ # municipios.first.nome #=> "Aquiraz"
143
+ #
144
+ # municipios = IBGE::Municipio.municipios_por_mesorregiao([2303, 2304])
145
+ def self.municipios_por_mesorregiao(mesorregioes)
146
+ mesorregioes = IBGE.formatar(mesorregioes)
147
+ resposta = RestClient.get("#{BASE_URL}/mesorregioes/#{mesorregioes}/municipios")
148
+
149
+ tratar_retorno(resposta)
150
+ end
151
+
152
+ private
153
+
154
+ def self.tratar_retorno(resposta)
155
+ municipios = JSON.parse(resposta.body)
156
+
157
+ if municipios.is_a?(Array)
158
+ municipios.map { |municipio| Municipio.new(municipio) }
159
+ else
160
+ Municipio.new(municipios)
161
+ end
162
+ end
163
+ end
164
+ end
data/lib/ibge/pais.rb ADDED
@@ -0,0 +1,53 @@
1
+ module IBGE
2
+ class Pais
3
+ attr_accessor :id, :nome, :regiao_intermediaria, :sub_regiao
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @regiao_intermediaria = options['regiao-intermediaria']
9
+ @sub_regiao = options['sub-regiao']
10
+ end
11
+
12
+ # Obtém o conjunto de países.
13
+ #
14
+ # @return [Array<Pais>]
15
+ #
16
+ # @example
17
+ # paises = IBGE::Pais.obter_paises
18
+ # paises.first.nome #=> "Afeganistão"
19
+ # paises.first.class #=> IBGE::Pais
20
+ def self.obter_paises
21
+ resposta = RestClient.get("#{BASE_URL}/paises")
22
+
23
+ tratar_retorno(resposta)
24
+ end
25
+
26
+ # Obtém o conjunto de países a partir dos respectivos identificadores.
27
+ # Pode ser informado o identificador (ID) ou um array de identificadores.
28
+ #
29
+ # @param paises [Integer, String, Array]
30
+ # @return [Array<Pais>]
31
+ #
32
+ # @example
33
+ # pais = IBGE::Pais.paises_por_identificador(76)
34
+ # pais.nome #=> "Brasil"
35
+ #
36
+ # paises = IBGE::Pais.paises_por_identificador([32, 76])
37
+ # paises.map(&:nome) #=> ["Argentina", "Brasil"]
38
+ def self.paises_por_identificador(paises)
39
+ paises = IBGE.formatar(paises)
40
+ resposta = RestClient.get("#{BASE_URL}/paises/#{paises}")
41
+
42
+ tratar_retorno(resposta)
43
+ end
44
+
45
+ private
46
+
47
+ def self.tratar_retorno(resposta)
48
+ paises = JSON.parse(resposta.body)
49
+
50
+ paises.map { |pais| Pais.new(pais) }
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,55 @@
1
+ module IBGE
2
+ class Regiao
3
+ attr_accessor :id, :nome, :sigla
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @sigla = options['sigla']
9
+ end
10
+
11
+ # Obtém o conjunto de regiões do Brasil.
12
+ #
13
+ # @return [<Array[Regiao]>]
14
+ #
15
+ # @example
16
+ # regioes = IBGE::Regiao.obter_regioes
17
+ # regioes.map(&:sigla) #=> ["N", "NE", "SE", "S", "CO"]
18
+ def self.obter_regioes
19
+ resposta = RestClient.get("#{BASE_URL}/regioes")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de regiões do Brasil a partir dos respectivos identificadores.
25
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
26
+ #
27
+ # @param regioes [String, Integer, Array]
28
+ # @return [Regiao, <Array[Regiao]>]
29
+ #
30
+ # @example
31
+ # regiao = IBGE::Regiao.regioes_por_identificador('NE')
32
+ # regiao.nome #=> "Nordeste"
33
+ #
34
+ # regioes = IBGE::Regiao.regioes_por_identificador([1, 2])
35
+ # regioes.map(&:sigla) #=> ["N", "NE"]
36
+ def self.regioes_por_identificador(regioes)
37
+ regioes = IBGE.formatar(regioes)
38
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}")
39
+
40
+ tratar_retorno(resposta)
41
+ end
42
+
43
+ private
44
+
45
+ def self.tratar_retorno(resposta)
46
+ regioes = JSON.parse(resposta.body)
47
+
48
+ if regioes.is_a?(Array)
49
+ regioes.map { |regiao| Regiao.new(regiao) }
50
+ else
51
+ Regiao.new(regioes)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,110 @@
1
+ module IBGE
2
+ class RegiaoImediata
3
+ attr_accessor :id, :nome, :regiao_intermediaria
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @regiao_intermediaria = RegiaoIntermediaria.new(options['regiao-intermediaria'])
9
+ end
10
+
11
+ # Obtém o conjunto de regiões imediatas do Brasil.
12
+ #
13
+ # @return [Array<RegiaoImediata>]
14
+ #
15
+ # @example
16
+ # regioes = IBGE::RegiaoImediata.obter_regioes_imediatas
17
+ # regioes.first.nome #=> "Porto Velho"
18
+ def self.obter_regioes_imediatas
19
+ resposta = RestClient.get("#{BASE_URL}/regioes-imediatas")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de regiões imediatas 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 regiões imediatas.
28
+ # @return [RegiaoImediata, Array<RegiaoImediata>]
29
+ #
30
+ # @example
31
+ # regiao = IBGE::RegiaoImediata.regioes_imediatas_por_id(230001)
32
+ # regiao.nome #=> "Fortaleza"
33
+ #
34
+ # regioes = IBGE::RegiaoImediata.regioes_imediatas_por_id([230001, 230002])
35
+ def self.regioes_imediatas_por_id(ids)
36
+ ids = IBGE.formatar(ids)
37
+ resposta = RestClient.get("#{BASE_URL}/regioes-imediatas/#{ids}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de regiões imediatas 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<RegiaoImediata>]
47
+ #
48
+ # @example
49
+ # regioes = IBGE::RegiaoImediata.regioes_imediatas_por_uf('CE')
50
+ # regioes.first.nome #=> "Fortaleza"
51
+ #
52
+ # IBGE::RegiaoImediata.regioes_imediatas_por_uf(['BA', 'CE'])
53
+ # IBGE::RegiaoImediata.regioes_imediatas_por_uf(23)
54
+ def self.regioes_imediatas_por_uf(ufs)
55
+ ufs = IBGE.formatar(ufs)
56
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/regioes-imediatas")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de regiões imediatas 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] Um ou mais identificadores de regiões.
65
+ # @return [Array<RegiaoImediata>]
66
+ #
67
+ # @example
68
+ # regioes = IBGE::RegiaoImediata.regioes_imediatas_por_regiao('NE')
69
+ # regioes.first.nome #=> "São Luís"
70
+ #
71
+ # IBGE::RegiaoImediata.regioes_imediatas_por_regiao(['NE', 'N'])
72
+ # IBGE::RegiaoImediata.regioes_imediatas_por_regiao([1, 2])
73
+ def self.regioes_imediatas_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/regioes-imediatas")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ # Obtém o conjunto de regiões imediatas do Brasil a partir dos identificadores das regiões intermediárias.
81
+ # Pode ser informado um único ID ou um array de IDs.
82
+ #
83
+ # @param ids [String, Integer, Array] Um ou mais identificadores de regiões intermediárias.
84
+ # @return [Array<RegiaoImediata>]
85
+ #
86
+ # @example
87
+ # regiao = IBGE::RegiaoImediata.regioes_imediatas_por_intermediaria(2301)
88
+ # regiao.nome #=> "Fortaleza"
89
+ #
90
+ # regioes = IBGE::RegiaoImediata.regioes_imediatas_por_intermediaria([2301, 2302])
91
+ def self.regioes_imediatas_por_intermediaria(regioes)
92
+ regioes = IBGE.formatar(regioes)
93
+ resposta = RestClient.get("#{BASE_URL}/regioes-intermediarias/#{regioes}/regioes-imediatas")
94
+
95
+ tratar_retorno(resposta)
96
+ end
97
+
98
+ private
99
+
100
+ def self.tratar_retorno(resposta)
101
+ regioes = JSON.parse(resposta.body)
102
+
103
+ if regioes.is_a?(Array)
104
+ regioes.map { |regiao| RegiaoImediata.new(regiao) }
105
+ else
106
+ RegiaoImediata.new(regioes)
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,92 @@
1
+ module IBGE
2
+ class RegiaoIntermediaria
3
+ attr_accessor :id, :nome, :uf
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @uf = UF.new(options['UF'])
9
+ end
10
+
11
+ # Obtém o conjunto de regiões intermediárias do Brasil.
12
+ #
13
+ # @return [Array<RegiaoIntermediaria>]
14
+ #
15
+ # @example
16
+ # regioes = IBGE::RegiaoIntermediaria.obter_regioes_intermediarias
17
+ # regioes.first.nome #=> "Porto Velho"
18
+ def self.obter_regioes_intermediarias
19
+ resposta = RestClient.get("#{BASE_URL}/regioes-intermediarias")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de regiões intermediárias 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 regiões intermediárias.
28
+ # @return [RegiaoIntermediaria, Array<RegiaoIntermediaria>]
29
+ #
30
+ # @example
31
+ # regiao = IBGE::RegiaoIntermediaria.regioes_intermediarias_por_id(2301)
32
+ # regiao.nome #=> "Fortaleza"
33
+ #
34
+ # regioes = IBGE::RegiaoIntermediaria.regioes_intermediarias_por_id([2301, 2302])
35
+ def self.regioes_intermediarias_por_id(ids)
36
+ ids = IBGE.formatar(ids)
37
+ resposta = RestClient.get("#{BASE_URL}/regioes-intermediarias/#{ids}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de regiões intermediárias 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<RegiaoIntermediaria>]
47
+ #
48
+ # @example
49
+ # regioes = IBGE::RegiaoIntermediaria.regioes_intermediarias_por_uf('CE')
50
+ # regioes.first.nome #=> "Fortaleza"
51
+ #
52
+ # IBGE::RegiaoIntermediaria.regioes_intermediarias_por_uf(['BA', 'CE'])
53
+ # IBGE::RegiaoIntermediaria.regioes_intermediarias_por_uf(23)
54
+ def self.regioes_intermediarias_por_uf(ufs)
55
+ ufs = IBGE.formatar(ufs)
56
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/regioes-intermediarias")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de regiões intermediárias 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] Um ou mais identificadores de regiões.
65
+ # @return [Array<RegiaoIntermediaria>]
66
+ #
67
+ # @example
68
+ # regioes = IBGE::RegiaoIntermediaria.regioes_intermediarias_por_regiao('NE')
69
+ # regioes.first.nome #=> "São Luís"
70
+ #
71
+ # IBGE::RegiaoIntermediaria.regioes_intermediarias_por_regiao(['NE', 'N'])
72
+ # IBGE::RegiaoIntermediaria.regioes_intermediarias_por_regiao([1, 2])
73
+ def self.regioes_intermediarias_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/regioes-intermediarias")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ private
81
+
82
+ def self.tratar_retorno(resposta)
83
+ regioes = JSON.parse(resposta.body)
84
+
85
+ if regioes.is_a?(Array)
86
+ regioes.map { |regiao| RegiaoIntermediaria.new(regiao) }
87
+ else
88
+ RegiaoIntermediaria.new(regioes)
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,160 @@
1
+ module IBGE
2
+ class Subdistrito
3
+ attr_accessor :id, :nome, :distrito
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @distrito = Distrito.new(options['distrito'])
9
+ end
10
+
11
+ # Obtém o conjunto de subdistritos do Brasil.
12
+ #
13
+ # @return [Array<Subdistrito>]
14
+ #
15
+ # @example
16
+ # subdistritos = IBGE::Subdistrito.obter_subdistritos
17
+ # subdistritos.first.nome #=> "Zona Central"
18
+ def self.obter_subdistritos
19
+ resposta = RestClient.get("#{BASE_URL}/subdistritos")
20
+
21
+ tratar_retorno(resposta)
22
+ end
23
+
24
+ # Obtém o conjunto de subdistritos 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 subdistritos.
28
+ # @return [Array<Subdistrito>]
29
+ #
30
+ # @example
31
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_id('23044000512')
32
+ # subdistritos.first.nome #=> "Mucuripe"
33
+ #
34
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_id(['23044000512', '23044006511'])
35
+ def self.subdistritos_por_id(ids)
36
+ ids = IBGE.formatar(ids)
37
+ resposta = RestClient.get("#{BASE_URL}/subdistritos/#{ids}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de subdistritos 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<Subdistrito>]
47
+ #
48
+ # @example
49
+ # distritos = IBGE::Subdistrito.subdistritos_por_uf('CE')
50
+ # distritos.first.nome #=> "Antônio Bezerra"
51
+ #
52
+ # IBGE::Subdistrito.subdistritos_por_uf(['BA', 'CE'])
53
+ # IBGE::Subdistrito.subdistritos_por_uf(23)
54
+ def self.subdistritos_por_uf(ufs)
55
+ ufs = IBGE.formatar(ufs)
56
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}/subdistritos")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ # Obtém o conjunto de subdistritos 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<Subdistrito>]
66
+ #
67
+ # @example
68
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_regiao('NE')
69
+ # subdistritos.first.nome #=> "RPA I"
70
+ #
71
+ # IBGE::Subdistrito.subdistritos_por_regiao(['NE', 'N'])
72
+ # IBGE::Subdistrito.subdistritos_por_regiao([1, 2])
73
+ def self.subdistritos_por_regiao(regioes)
74
+ regioes = IBGE.formatar(regioes)
75
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/subdistritos")
76
+
77
+ tratar_retorno(resposta)
78
+ end
79
+
80
+ # Obtém o conjunto de subdistritos do Brasil a partir dos identificadores das microrregiões.
81
+ # Pode ser informado um único ID ou um array de IDs.
82
+ #
83
+ # @param microrregioes [String, Integer, Array] Um ou mais identificadores de microrregiões.
84
+ # @return [Array<Subdistrito>]
85
+ #
86
+ # @example
87
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_microrregiao(23016)
88
+ # subdistritos.last.nome #=> "Parangaba"
89
+ #
90
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_microrregiao([23016, 23017])
91
+ def self.subdistritos_por_microrregiao(microrregioes)
92
+ microrregioes = IBGE.formatar(microrregioes)
93
+ resposta = RestClient.get("#{BASE_URL}/microrregioes/#{microrregioes}/subdistritos")
94
+
95
+ tratar_retorno(resposta)
96
+ end
97
+
98
+ # Obtém o conjunto de subdistritos do Brasil a partir dos identificadores das mesorregiões.
99
+ # Pode ser informado um único ID ou um array de IDs.
100
+ #
101
+ # @param mesorregioes [String, Integer, Array] Um ou mais identificadores de mesorregiões.
102
+ # @return [Array<Subdistrito>]
103
+ #
104
+ # @example
105
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_mesorregiao(2303)
106
+ # subdistritos.first.nome #=> "Antônio Bezerra"
107
+ #
108
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_mesorregiao([2303, 2304])
109
+ def self.subdistritos_por_mesorregiao(mesorregioes)
110
+ mesorregioes = IBGE.formatar(mesorregioes)
111
+ resposta = RestClient.get("#{BASE_URL}/mesorregioes/#{mesorregioes}/subdistritos")
112
+
113
+ tratar_retorno(resposta)
114
+ end
115
+
116
+ # Obtém o conjunto de subdistritos do Brasil a partir dos identificadores dos distritos.
117
+ # Pode ser informado um único ID ou um array de IDs.
118
+ #
119
+ # @param distritos [String, Integer, Array] um ou mais identificadores de distritos.
120
+ # @return [Array<Subdistrito>]
121
+ #
122
+ # @example
123
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_distrito('230440005')
124
+ # subdistritos.last.nome #=> "Mucuripe"
125
+ #
126
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_distrito(['230440005', '230370905'])
127
+ def self.subdistritos_por_distrito(distritos)
128
+ distritos = IBGE.formatar(distritos)
129
+ resposta = RestClient.get("#{BASE_URL}/distritos/#{distritos}/subdistritos")
130
+
131
+ tratar_retorno(resposta)
132
+ end
133
+
134
+ # Obtém o conjunto de subdistritos do Brasil a partir dos identificadores dos municípios.
135
+ # Pode ser informado um único ID ou um array de IDs.
136
+ #
137
+ # @param municipios [String, Integer, Array] um ou mais identificadores de municípios.
138
+ # @return [Array<Subdistrito>]
139
+ #
140
+ # @example
141
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_municipio('2304400')
142
+ # subdistritos.last.nome #=> "Parangaba"
143
+ #
144
+ # subdistritos = IBGE::Subdistrito.subdistritos_por_municipio(['2304400', '2927408'])
145
+ def self.subdistritos_por_municipio(municipios)
146
+ municipios = IBGE.formatar(municipios)
147
+ resposta = RestClient.get("#{BASE_URL}/municipios/#{municipios}/subdistritos")
148
+
149
+ tratar_retorno(resposta)
150
+ end
151
+
152
+ private
153
+
154
+ def self.tratar_retorno(resposta)
155
+ subdistritos = JSON.parse(resposta.body)
156
+
157
+ subdistritos.map { |subdistrito| Subdistrito.new(subdistrito) }
158
+ end
159
+ end
160
+ end