parliament-ruby 0.5.19 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -3
  3. data/.travis.yml +0 -1
  4. data/Gemfile +2 -0
  5. data/Makefile +9 -4
  6. data/README.md +185 -11
  7. data/Rakefile +1 -1
  8. data/lib/parliament/client_error.rb +21 -0
  9. data/lib/parliament/decorator/constituency_area.rb +27 -0
  10. data/lib/parliament/{decorators → decorator}/constituency_group.rb +29 -1
  11. data/lib/parliament/decorator/contact_point.rb +48 -0
  12. data/lib/parliament/decorator/gender.rb +13 -0
  13. data/lib/parliament/decorator/gender_identity.rb +13 -0
  14. data/lib/parliament/decorator/house.rb +41 -0
  15. data/lib/parliament/decorator/house_incumbency.rb +50 -0
  16. data/lib/parliament/decorator/house_seat.rb +27 -0
  17. data/lib/parliament/decorator/incumbency.rb +57 -0
  18. data/lib/parliament/decorator/party.rb +27 -0
  19. data/lib/parliament/decorator/party_membership.rb +36 -0
  20. data/lib/parliament/decorator/person.rb +224 -0
  21. data/lib/parliament/{decorators → decorator}/postal_address.rb +5 -1
  22. data/lib/parliament/decorator/seat_incumbency.rb +64 -0
  23. data/lib/parliament/decorator.rb +7 -0
  24. data/lib/parliament/network_error.rb +13 -0
  25. data/lib/parliament/no_content_response_error.rb +19 -0
  26. data/lib/parliament/request.rb +112 -33
  27. data/lib/parliament/response.rb +76 -9
  28. data/lib/parliament/server_error.rb +21 -0
  29. data/lib/parliament/utils.rb +113 -13
  30. data/lib/parliament/version.rb +1 -1
  31. data/lib/parliament.rb +8 -4
  32. data/parliament-ruby.gemspec +6 -6
  33. metadata +32 -28
  34. data/lib/parliament/decorators/constituency_area.rb +0 -17
  35. data/lib/parliament/decorators/contact_point.rb +0 -29
  36. data/lib/parliament/decorators/gender.rb +0 -9
  37. data/lib/parliament/decorators/gender_identity.rb +0 -9
  38. data/lib/parliament/decorators/house.rb +0 -28
  39. data/lib/parliament/decorators/house_incumbency.rb +0 -31
  40. data/lib/parliament/decorators/house_seat.rb +0 -17
  41. data/lib/parliament/decorators/incumbency.rb +0 -35
  42. data/lib/parliament/decorators/party.rb +0 -17
  43. data/lib/parliament/decorators/party_membership.rb +0 -23
  44. data/lib/parliament/decorators/person.rb +0 -152
  45. data/lib/parliament/decorators/seat_incumbency.rb +0 -39
  46. data/lib/parliament/no_content_error.rb +0 -9
@@ -1,17 +0,0 @@
1
- module Parliament
2
- module Decorators
3
- module HouseSeat
4
- def house
5
- respond_to?(:houseSeatHasHouse) ? houseSeatHasHouse.first : nil
6
- end
7
-
8
- def constituency
9
- respond_to?(:houseSeatHasConstituencyGroup) ? houseSeatHasConstituencyGroup.first : nil
10
- end
11
-
12
- def seat_incumbencies
13
- respond_to?(:houseSeatHasSeatIncumbency) ? houseSeatHasSeatIncumbency : []
14
- end
15
- end
16
- end
17
- end
@@ -1,35 +0,0 @@
1
- module Parliament
2
- module Decorators
3
- module Incumbency
4
- def start_date
5
- respond_to?(:incumbencyStartDate) ? DateTime.parse(incumbencyStartDate) : nil
6
- end
7
-
8
- def end_date
9
- respond_to?(:incumbencyEndDate) ? DateTime.parse(incumbencyEndDate) : nil
10
- end
11
-
12
- def current?
13
- has_end_date = respond_to?(:incumbencyEndDate)
14
-
15
- !has_end_date
16
- end
17
-
18
- def member
19
- respond_to?(:incumbencyHasMember) ? incumbencyHasMember.first : nil
20
- end
21
-
22
- def contact_points
23
- respond_to?(:incumbencyHasContactPoint) ? incumbencyHasContactPoint : []
24
- end
25
-
26
- def seat
27
- respond_to?(:seatIncumbencyHasHouseSeat) ? seatIncumbencyHasHouseSeat.first : nil
28
- end
29
-
30
- def house
31
- respond_to?(:houseIncumbencyHasHouse) ? houseIncumbencyHasHouse.first : nil
32
- end
33
- end
34
- end
35
- end
@@ -1,17 +0,0 @@
1
- module Parliament
2
- module Decorators
3
- module Party
4
- def name
5
- respond_to?(:partyName) ? partyName : ''
6
- end
7
-
8
- def party_memberships
9
- respond_to?(:partyHasPartyMembership) ? partyHasPartyMembership : []
10
- end
11
-
12
- def member_count
13
- respond_to?(:count) ? count.to_i : nil
14
- end
15
- end
16
- end
17
- end
@@ -1,23 +0,0 @@
1
- module Parliament
2
- module Decorators
3
- module PartyMembership
4
- def party
5
- respond_to?(:partyMembershipHasParty) ? partyMembershipHasParty.first : nil
6
- end
7
-
8
- def start_date
9
- respond_to?(:partyMembershipStartDate) ? DateTime.parse(partyMembershipStartDate) : nil
10
- end
11
-
12
- def end_date
13
- respond_to?(:partyMembershipEndDate) ? DateTime.parse(partyMembershipEndDate) : nil
14
- end
15
-
16
- def current?
17
- has_end_date = respond_to?(:partyMembershipEndDate)
18
-
19
- !has_end_date
20
- end
21
- end
22
- end
23
- end
@@ -1,152 +0,0 @@
1
- module Parliament
2
- module Decorators
3
- module Person
4
- def given_name
5
- respond_to?(:personGivenName) ? personGivenName : ''
6
- end
7
-
8
- def family_name
9
- respond_to?(:personFamilyName) ? personFamilyName : ''
10
- end
11
-
12
- def other_name
13
- respond_to?(:personOtherNames) ? personOtherNames : ''
14
- end
15
-
16
- def date_of_birth
17
- respond_to?(:personDateOfBirth) ? DateTime.parse(personDateOfBirth) : nil
18
- end
19
-
20
- def full_name
21
- full_name = ''
22
- full_name += respond_to?(:personGivenName) ? personGivenName + ' ' : ''
23
- full_name += respond_to?(:personFamilyName) ? personFamilyName : ''
24
- full_name.rstrip
25
- end
26
-
27
- def incumbencies
28
- respond_to?(:memberHasIncumbency) ? memberHasIncumbency : []
29
- end
30
-
31
- def seat_incumbencies
32
- if respond_to?(:memberHasIncumbency)
33
- memberHasIncumbency.select { |inc| inc.type == 'http://id.ukpds.org/schema/SeatIncumbency' }
34
- else
35
- []
36
- end
37
- end
38
-
39
- def house_incumbencies
40
- if respond_to?(:memberHasIncumbency)
41
- memberHasIncumbency.select { |inc| inc.type == 'http://id.ukpds.org/schema/HouseIncumbency' }
42
- else
43
- []
44
- end
45
- end
46
-
47
- def seats
48
- return @seats unless @seats.nil?
49
-
50
- seats = []
51
- seat_incumbencies.each do |incumbency|
52
- seats << incumbency.seat if incumbency.respond_to?(:seat)
53
- end
54
-
55
- @seats = seats.flatten.uniq
56
- end
57
-
58
- def houses
59
- return @houses unless @houses.nil?
60
-
61
- houses = []
62
- seats.each do |seat|
63
- houses << seat.house
64
- end
65
-
66
- house_incumbencies.each do |inc|
67
- houses << inc.house
68
- end
69
-
70
- @houses = houses.flatten.uniq
71
- end
72
-
73
- def constituencies
74
- return @constituencies unless @constituencies.nil?
75
-
76
- constituencies = []
77
- seats.each do |seat|
78
- constituencies << seat.constituency
79
- end
80
-
81
- @constituencies = constituencies.flatten.uniq
82
- end
83
-
84
- def party_memberships
85
- respond_to?(:partyMemberHasPartyMembership) ? partyMemberHasPartyMembership : []
86
- end
87
-
88
- def parties
89
- return @parties unless @parties.nil?
90
-
91
- parties = []
92
- party_memberships.each do |party_membership|
93
- parties << party_membership.party
94
- end
95
-
96
- @parties = parties.flatten.uniq.compact
97
- end
98
-
99
- def contact_points
100
- respond_to?(:personHasContactPoint) ? personHasContactPoint : []
101
- end
102
-
103
- def gender_identities
104
- respond_to?(:personHasGenderIdentity) ? personHasGenderIdentity : []
105
- end
106
-
107
- def gender
108
- gender_identities.empty? ? nil : gender_identities.first.gender
109
- end
110
-
111
- def statuses
112
- return @statuses unless @statuses.nil?
113
-
114
- statuses = {}
115
- statuses[:house_membership_status] = house_membership_status
116
- statuses[:general_membership_status] = general_membership_status
117
-
118
- @statuses = statuses
119
- end
120
-
121
- def full_title
122
- respond_to?(:D79B0BAC513C4A9A87C9D5AFF1FC632F) ? self.D79B0BAC513C4A9A87C9D5AFF1FC632F : ''
123
- end
124
-
125
- def display_name
126
- respond_to?(:F31CBD81AD8343898B49DC65743F0BDF) ? self.F31CBD81AD8343898B49DC65743F0BDF : full_name
127
- end
128
-
129
- def sort_name
130
- respond_to?(:A5EE13ABE03C4D3A8F1A274F57097B6C) ? self.A5EE13ABE03C4D3A8F1A274F57097B6C : ''
131
- end
132
-
133
- private
134
-
135
- def house_membership_status
136
- statuses = []
137
- statuses << 'Current MP' unless seat_incumbencies.select(&:current?).empty?
138
- statuses << 'Lord' unless house_incumbencies.select(&:current?).empty?
139
- statuses << 'Former Lord' if !house_incumbencies.empty? && house_incumbencies.select(&:current?).empty?
140
- statuses << 'Former MP' if !seat_incumbencies.empty? && seat_incumbencies.select(&:current?).empty?
141
- statuses
142
- end
143
-
144
- def general_membership_status
145
- statuses = []
146
- statuses << 'Current Member' unless incumbencies.select(&:current?).empty?
147
- statuses << 'Former Member' if !incumbencies.empty? && incumbencies.select(&:current?).empty?
148
- statuses
149
- end
150
- end
151
- end
152
- end
@@ -1,39 +0,0 @@
1
- module Parliament
2
- module Decorators
3
- module SeatIncumbency
4
- def start_date
5
- respond_to?(:incumbencyStartDate) ? DateTime.parse(incumbencyStartDate) : nil
6
- end
7
-
8
- def end_date
9
- respond_to?(:incumbencyEndDate) ? DateTime.parse(incumbencyEndDate) : nil
10
- end
11
-
12
- def seat
13
- respond_to?(:seatIncumbencyHasHouseSeat) ? seatIncumbencyHasHouseSeat.first : nil
14
- end
15
-
16
- def current?
17
- has_end_date = respond_to?(:incumbencyEndDate)
18
-
19
- !has_end_date
20
- end
21
-
22
- def house
23
- seat.nil? ? nil : seat.house
24
- end
25
-
26
- def constituency
27
- seat.nil? ? nil : seat.constituency
28
- end
29
-
30
- def contact_points
31
- respond_to?(:incumbencyHasContactPoint) ? incumbencyHasContactPoint : []
32
- end
33
-
34
- def member
35
- respond_to?(:incumbencyHasMember) ? incumbencyHasMember.first : nil
36
- end
37
- end
38
- end
39
- end
@@ -1,9 +0,0 @@
1
- module Parliament
2
- class NoContentError < StandardError
3
- attr_reader :message
4
-
5
- def initialize
6
- @message = 'No content'
7
- end
8
- end
9
- end