br_open_data 0.0.1 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d4330ae5d64177c9f640a60c8e1830893305c6a
4
- data.tar.gz: 3c93c1af35ebea7d8c71ad21879df19c04a8337c
3
+ metadata.gz: 6d7d883337ec72159446aee3ee1fd2b9220278c9
4
+ data.tar.gz: 79811b68cdba04ee489eef5e9ce84b37d7a87dab
5
5
  SHA512:
6
- metadata.gz: 0c39fe4ac2303853c02786bff0663911fa3e06251380ad7b1d271778a161bfef297d16e421b46f42f9f5f91143f952f8c440c169de42d00c63954e1870125969
7
- data.tar.gz: fe4b31fa3d99acff953f8a2dfc1fb025ae2b2a809128edb3981826043bc9044bb0b9ad70297bfe7634faac7ea049090beacef8681432804dcb537df5fd4fa2bb
6
+ metadata.gz: 615dbe322c0560d341ed1be1f1f22d8242a357719e7f3445b09d08fe18afc068bbbcd5723fd3f5a875a6e68e063b572a1556031f4e562df9568e7540a44a8acf
7
+ data.tar.gz: d0fd9b98506515970bd99cd1c6dbe9b1f927eddd89b3e69cd9280211d73a023ba87880ef8fb4bc5a7346e3a9556b67a1cb277976881b4713aa52a7c4f6ba4d84
@@ -15,8 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = 'exe'
19
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
19
  spec.require_paths = ['lib']
21
20
 
22
21
  #================== GEMs to build it GEM, so its improve the development ==============================
@@ -34,10 +33,11 @@ Gem::Specification.new do |spec|
34
33
  #================== GEMs to be used when it is called on a project ====================================
35
34
  # HTTP REST Client
36
35
  spec.add_dependency 'rest-client', '~> 1.7', '>= 1.7.2'
37
- # WSDL SOAP Client
38
- spec.add_dependency 'savon', '~> 2.11.1', '>= 2.11.1'
39
36
  # Easy JSON create
40
37
  spec.add_dependency 'multi_json', '~> 1.10', '>= 1.10.1'
41
38
  # To pretty print on console
42
39
  spec.add_dependency 'colorize', '~> 0.7.3', '>= 0.7.3'
40
+ # For XML parser
41
+ spec.add_dependency 'nori', '~> 2.6.0', '>= 2.6.0'
42
+ spec.add_dependency 'nokogiri', '~> 1.6.6.2', '>= 1.6.6.2'
43
43
  end
@@ -1,5 +1,17 @@
1
- require "br_open_data/version"
1
+ # Libs/Gems or Ruby classes
2
+ require 'nori'
3
+ require 'rest_client'
4
+
5
+ # Overrides
6
+ require 'br_open_data/hash'
7
+
8
+ # Gem files
9
+ [:version, :hash, :parent_service].each { |lib| require "br_open_data/#{lib}" }
10
+ [:service].each { |lib| require "br_open_data/chamber/#{lib}" }
11
+ [:service].each { |lib| require "br_open_data/senate/#{lib}" }
2
12
 
3
13
  module BROpenData
4
- # Your code goes here...
14
+ def self.chamber
15
+ BROpenData::Chamber::Service.instance
16
+ end
5
17
  end
@@ -0,0 +1,30 @@
1
+ module BROpenData::Chamber
2
+ class Service < BROpenData::ParentService
3
+ include Singleton
4
+ def initialize
5
+ self.domain = 'www.camara.gov.br/SitCamaraWS'
6
+ end
7
+
8
+ # Return projects/propositions of Laws & Constitutional
9
+ # @params sigla: 'PL,PEC,MPV', numero: 1, ano:'2015', datApresentacaoIni:'14/11/2011',
10
+ # @params datApresentacaoFim: '16/11/2011', parteNomeAutor: 'João', idTipoAutor:'Suplente', codEstado: 'TO', codOrgaoEstado: 12, emTramitacao: true
11
+ # @params siglaUFAutor: 'TO', generoAutor: 'M'
12
+ def propositions(params={})
13
+ self.path='Proposicoes.asmx/ListarProposicoes'
14
+ setup_propositions(params)
15
+ resp = perform_get_request
16
+ resp[:proposicoes][:proposicao]
17
+ end
18
+
19
+ private
20
+ # SetUp the params to be not nil
21
+ def setup_propositions(params)
22
+ self.params = {
23
+ sigla: params[:sigla], numero: params[:numero], ano: params[:ano], datApresentacaoIni: params[:datApresentacaoIni],
24
+ generoAutor: params[:generoAutor], datApresentacaoFim: params[:datApresentacaoFim], parteNomeAutor: params[:parteNomeAutor],
25
+ idTipoAutor: params[:idTipoAutor], siglaUFAutor: params[:siglaUFAutor], codEstado: params[:codEstado],
26
+ codOrgaoEstado: params[:codOrgaoEstado], emTramitacao: params[:emTramitacao], siglaPartidoAutor: params[:siglaPartidoAutor]
27
+ }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,63 @@
1
+ # Override ruby Hash Obj
2
+ class Hash
3
+ # Attr to be external accessible
4
+ attr_accessor :get_url_params
5
+
6
+ # Convert string keys to symbol keys
7
+ def it_keys_to_sym
8
+ self.keys.each do |key|
9
+ self[key].it_keys_to_sym if self[key].is_a?(Hash)
10
+ self[key].each{|v| v.it_keys_to_sym if v.is_a?Hash} if self[key].is_a?Array
11
+ self[(key.to_sym rescue key) || key] = self.delete(key)
12
+ end
13
+
14
+ return self
15
+ end
16
+
17
+ # Convert it keys to get params
18
+ def it_keys_to_get_param
19
+ self.it_keys_to_sym
20
+ self.get_url_params = '?'
21
+
22
+ self.keys.each do |key|
23
+ self.get_url_params = self.get_url_params+'&' unless self.get_url_params.length == 1
24
+
25
+ # Nested obj_attrs
26
+ if self[key].is_a?(Hash)
27
+ hash_name = key
28
+ hash_obj = self[key]
29
+
30
+ # Hash to GET URL
31
+ param = to_nested_get_param hash_name, hash_obj
32
+ else
33
+ param="#{key}=#{self[key]}"
34
+ end
35
+
36
+ self.get_url_params = self.get_url_params+param
37
+ end
38
+
39
+ # Remove the last char: &
40
+ self.get_url_params = self.get_url_params[0..self.get_url_params.length-2] if self.get_url_params.index('\\')
41
+ self.get_url_params
42
+ end
43
+
44
+ # SetUp a hash to hash URL GET
45
+ def to_nested_get_param hash_name, hash_obj
46
+ # initial value
47
+ get_nested_params = ''
48
+
49
+ # foreach keys to mount the URL_PARAM
50
+ hash_obj.keys.each do |key|
51
+ key_param = hash_obj[key].to_nested_get_param key, hash_obj[key] if hash_obj[key].is_a?(Hash)
52
+ key_param = "#{hash_name}[#{key}]=#{hash_obj[key]}&" unless hash_obj[key].is_a?(Hash)
53
+ get_nested_params = get_nested_params+key_param
54
+ end
55
+
56
+ # return
57
+ get_nested_params
58
+ end
59
+
60
+ def self.from_xml(xml)
61
+ Nori.new.parse xml
62
+ end
63
+ end
@@ -0,0 +1,45 @@
1
+ require 'singleton'
2
+
3
+ module BROpenData
4
+ class ParentService
5
+ include Singleton
6
+
7
+ # Base URL builder Attributes
8
+ attr_accessor :path
9
+ attr_accessor :domain
10
+
11
+ # API attrs
12
+ attr_accessor :params
13
+
14
+ # init/new
15
+ def initialize
16
+ end
17
+
18
+ private
19
+ # Build an URL base on the end_point & it path
20
+ def url
21
+ "http://#{self.domain}/#{self.path}"
22
+ end
23
+
24
+ # Build an GET URL base on the end_point & it path
25
+ def get_url
26
+ "http://#{self.domain}/#{self.path}#{self.params.it_keys_to_get_param}"
27
+ end
28
+
29
+ # send GET HTTP request
30
+ def get_request(hash=true)
31
+ resp = RestClient.get get_url
32
+ hash ? Hash.from_xml(resp).it_keys_to_sym : resp
33
+ end
34
+
35
+ # Validate & perform the request
36
+ def perform_get_request
37
+ # Validate preventing request error
38
+
39
+ # setup params, like API Key if needed
40
+
41
+ # Perform the request
42
+ get_request
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,8 @@
1
+ module BROpenData::Senate
2
+ class Service < BROpenData::ParentService
3
+ include Singleton
4
+ def initialize
5
+ self.end_point = 'http://legis.senado.leg.br/dadosabertos'
6
+ end
7
+ end
8
+ end
@@ -1,6 +1,6 @@
1
1
  module BROpenData
2
2
  MAJOR = 0
3
3
  MINOR = 0
4
- PATCH = 1
4
+ PATCH = 2
5
5
  VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
6
6
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: br_open_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilton Garcia dos Santos Silveira
8
8
  - Gilson Cordeiro da Silva
9
9
  autorequire:
10
- bindir: exe
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-12 00:00:00.000000000 Z
12
+ date: 2015-07-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -126,70 +126,92 @@ dependencies:
126
126
  - !ruby/object:Gem::Version
127
127
  version: 1.7.2
128
128
  - !ruby/object:Gem::Dependency
129
- name: savon
129
+ name: multi_json
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: 2.11.1
134
+ version: '1.10'
135
135
  - - ">="
136
136
  - !ruby/object:Gem::Version
137
- version: 2.11.1
137
+ version: 1.10.1
138
138
  type: :runtime
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: 2.11.1
144
+ version: '1.10'
145
145
  - - ">="
146
146
  - !ruby/object:Gem::Version
147
- version: 2.11.1
147
+ version: 1.10.1
148
148
  - !ruby/object:Gem::Dependency
149
- name: multi_json
149
+ name: colorize
150
150
  requirement: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - "~>"
153
153
  - !ruby/object:Gem::Version
154
- version: '1.10'
154
+ version: 0.7.3
155
155
  - - ">="
156
156
  - !ruby/object:Gem::Version
157
- version: 1.10.1
157
+ version: 0.7.3
158
158
  type: :runtime
159
159
  prerelease: false
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  requirements:
162
162
  - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: '1.10'
164
+ version: 0.7.3
165
165
  - - ">="
166
166
  - !ruby/object:Gem::Version
167
- version: 1.10.1
167
+ version: 0.7.3
168
168
  - !ruby/object:Gem::Dependency
169
- name: colorize
169
+ name: nori
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - "~>"
173
173
  - !ruby/object:Gem::Version
174
- version: 0.7.3
174
+ version: 2.6.0
175
175
  - - ">="
176
176
  - !ruby/object:Gem::Version
177
- version: 0.7.3
177
+ version: 2.6.0
178
178
  type: :runtime
179
179
  prerelease: false
180
180
  version_requirements: !ruby/object:Gem::Requirement
181
181
  requirements:
182
182
  - - "~>"
183
183
  - !ruby/object:Gem::Version
184
- version: 0.7.3
184
+ version: 2.6.0
185
185
  - - ">="
186
186
  - !ruby/object:Gem::Version
187
- version: 0.7.3
187
+ version: 2.6.0
188
+ - !ruby/object:Gem::Dependency
189
+ name: nokogiri
190
+ requirement: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 1.6.6.2
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: 1.6.6.2
198
+ type: :runtime
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: 1.6.6.2
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 1.6.6.2
188
208
  description: Brazil OpenData WebService ruby Client
189
209
  email:
190
210
  - "'ton.garcia.jr@gmail.com',"
191
211
  - "'gil_wind@hotmail.com'"
192
- executables: []
212
+ executables:
213
+ - console
214
+ - setup
193
215
  extensions: []
194
216
  extra_rdoc_files: []
195
217
  files:
@@ -204,6 +226,10 @@ files:
204
226
  - bin/setup
205
227
  - br_open_data.gemspec
206
228
  - lib/br_open_data.rb
229
+ - lib/br_open_data/chamber/service.rb
230
+ - lib/br_open_data/hash.rb
231
+ - lib/br_open_data/parent_service.rb
232
+ - lib/br_open_data/senate/service.rb
207
233
  - lib/br_open_data/version.rb
208
234
  homepage: http://tonfw.github.io/br_open_data
209
235
  licenses:
@@ -225,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
251
  version: '0'
226
252
  requirements: []
227
253
  rubyforge_project:
228
- rubygems_version: 2.2.2
254
+ rubygems_version: 2.4.8
229
255
  signing_key:
230
256
  specification_version: 4
231
257
  summary: Brazil OpenData WebService ruby Client