br_open_data 0.0.1 → 0.0.2

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