open_parliament 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/open_parliament.rb +10 -20
- data/lib/open_parliament/bill.rb +19 -0
- data/lib/open_parliament/committee.rb +8 -0
- data/lib/open_parliament/debate.rb +13 -0
- data/lib/open_parliament/politician.rb +14 -0
- data/lib/open_parliament/request_service.rb +24 -10
- data/lib/open_parliament/vote.rb +18 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c98dbb25ff004ba689bba2aed053e95565c0647a
|
4
|
+
data.tar.gz: a7b70eae9faa073fa005bcfa99d34f04cb11d4b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88b8228dab66079d676d531875a9e03b66a7547e22f8ac965df8199b36c37c7cbe94f2872c59bd65ecd55cbf92daab8c91d10e713e5711f357eb59c88934a353
|
7
|
+
data.tar.gz: 6303b731f2603d16c5437b49ce60c2225c4e24983a75fac9e60b7848b0822cc32cbad0f615c8924ba78ef63cef88b60ce23c1884220c1a669fdcf63c9bbfdca3
|
data/lib/open_parliament.rb
CHANGED
@@ -14,37 +14,27 @@ module OpenParliament
|
|
14
14
|
API_URL = 'http://api.openparliament.ca'
|
15
15
|
|
16
16
|
def self.bills(params = {})
|
17
|
-
|
18
|
-
|
19
|
-
bills = json["objects"]
|
20
|
-
bills.map { |bill_json| Bill.new(bill_json) }
|
17
|
+
bills_service = RequestService.new(Bill)
|
18
|
+
bills_service.get(params)
|
21
19
|
end
|
22
20
|
|
23
21
|
def self.committees(params = {})
|
24
|
-
|
25
|
-
|
26
|
-
committees = json["objects"]
|
27
|
-
committees.map { |committee_json| Committee.new(committee_json) }
|
22
|
+
committees_service = RequestService.new(Committee)
|
23
|
+
committees_service.get(params)
|
28
24
|
end
|
29
25
|
|
30
26
|
def self.debates(params = {})
|
31
|
-
|
32
|
-
|
33
|
-
debates = json["objects"]
|
34
|
-
debates.map { |debate_json| Debate.new(debate_json) }
|
27
|
+
debates_service = RequestService.new(Debate)
|
28
|
+
debates_service.get(params)
|
35
29
|
end
|
36
30
|
|
37
31
|
def self.votes(params = {})
|
38
|
-
|
39
|
-
|
40
|
-
votes = json["objects"]
|
41
|
-
votes.map { |vote_json| Vote.new(vote_json) }
|
32
|
+
votes_service = RequestService.new(Vote)
|
33
|
+
votes_service.get(params)
|
42
34
|
end
|
43
35
|
|
44
36
|
def self.politicians(params = {})
|
45
|
-
|
46
|
-
|
47
|
-
politicians = json["objects"]
|
48
|
-
politicians.map { |politician_json| Politician.new(politician_json) }
|
37
|
+
politicians_service = RequestService.new(Politician)
|
38
|
+
politicians_service.get(params)
|
49
39
|
end
|
50
40
|
end
|
data/lib/open_parliament/bill.rb
CHANGED
@@ -1,4 +1,23 @@
|
|
1
1
|
module OpenParliament
|
2
2
|
class Bill < OpenStruct
|
3
|
+
|
4
|
+
def self.resource_url
|
5
|
+
"/bills/"
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.valid_filters
|
9
|
+
[
|
10
|
+
:introduced,
|
11
|
+
:law,
|
12
|
+
:legisinfo_id,
|
13
|
+
:number,
|
14
|
+
:private_member_bill,
|
15
|
+
:session,
|
16
|
+
:sponsor_politician,
|
17
|
+
:sponsor_politician_membership,
|
18
|
+
:status_code,
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
3
22
|
end
|
4
23
|
end
|
@@ -1,33 +1,47 @@
|
|
1
1
|
module OpenParliament
|
2
|
-
|
2
|
+
class RequestService
|
3
3
|
|
4
4
|
VALID_PARAMS = [:limit, :offset]
|
5
5
|
|
6
|
-
def
|
7
|
-
|
6
|
+
def initialize(klass)
|
7
|
+
@klass = klass
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(params = {})
|
11
|
+
json = make_request(url: @klass.resource_url, method: :get, params: params)
|
12
|
+
objects = json["objects"]
|
13
|
+
objects.map { |object_json| @klass.new(object_json) }
|
14
|
+
end
|
8
15
|
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def make_request(url:, method:, params: {})
|
20
|
+
@params = params
|
21
|
+
|
22
|
+
full_url = "#{OpenParliament::API_URL}#{url}"
|
9
23
|
resp = RestClient::Request.execute(method: method,
|
10
24
|
url: full_url,
|
11
25
|
timeout: 10,
|
12
|
-
headers: build_headers
|
26
|
+
headers: build_headers,
|
13
27
|
)
|
14
28
|
JSON.parse(resp)
|
15
29
|
end
|
16
30
|
|
17
|
-
def
|
31
|
+
def build_headers
|
18
32
|
{
|
19
33
|
"API-Version" => "v1",
|
20
34
|
accept: :json,
|
21
|
-
params: build_params
|
35
|
+
params: build_params,
|
22
36
|
}
|
23
37
|
end
|
24
38
|
|
25
|
-
def
|
26
|
-
|
27
|
-
default_params.merge(
|
39
|
+
def build_params
|
40
|
+
filtered_params = @params.select { |k| (VALID_PARAMS + @klass.valid_filters).include?(k) }
|
41
|
+
default_params.merge(filtered_params)
|
28
42
|
end
|
29
43
|
|
30
|
-
def
|
44
|
+
def default_params
|
31
45
|
{
|
32
46
|
limit: 20,
|
33
47
|
offset: 0,
|
data/lib/open_parliament/vote.rb
CHANGED
@@ -1,4 +1,22 @@
|
|
1
1
|
module OpenParliament
|
2
2
|
class Vote < OpenStruct
|
3
|
+
|
4
|
+
def self.resource_url
|
5
|
+
"/votes/"
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.valid_filters
|
9
|
+
[
|
10
|
+
:bill,
|
11
|
+
:date,
|
12
|
+
:nay_total,
|
13
|
+
:number,
|
14
|
+
:paired_total,
|
15
|
+
:result,
|
16
|
+
:session,
|
17
|
+
:yea_total,
|
18
|
+
]
|
19
|
+
end
|
20
|
+
|
3
21
|
end
|
4
22
|
end
|