parliament-ruby 0.5.19 → 0.6.0

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