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
@@ -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