twfy 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,95 +1,175 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: twfy
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
5
  platform: ruby
6
- authors:
7
- - Bruce Williams
6
+ authors:
7
+ - Tom Hipkin
8
8
  - Martin Owen
9
+ - Bruce Williams
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
-
13
- date: 2008-08-03 00:00:00 +01:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: json
13
+ date: 2013-11-13 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: multi_json
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
18
22
  type: :runtime
19
- version_requirement:
20
- version_requirements: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
25
- version:
26
- - !ruby/object:Gem::Dependency
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
27
30
  name: paginator
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '1.2'
28
36
  type: :runtime
29
- version_requirement:
30
- version_requirements: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
35
- version:
36
- - !ruby/object:Gem::Dependency
37
- name: hoe
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.2'
43
+ - !ruby/object:Gem::Dependency
44
+ name: bundler
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.5
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 1.3.5
57
+ - !ruby/object:Gem::Dependency
58
+ name: json
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
38
64
  type: :development
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: 1.7.0
45
- version:
46
- description: Ruby library to interface with the TheyWorkForYou API. TheyWorkForYou.com is "a non-partisan, volunteer-run website which aims to make it easy for people to keep tabs on their elected and unelected representatives in Parliament."
47
- email: bruce@codefluency.com
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: vcr
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rake
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: webmock
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ description: Ruby library to interface with the TheyWorkForYou API.
114
+ email:
115
+ - brwcodes@gmail.com
116
+ - tomhipkin@gmail.com
48
117
  executables: []
49
-
50
118
  extensions: []
51
-
52
- extra_rdoc_files:
53
- - History.txt
54
- - Manifest.txt
55
- - README.txt
56
- files:
119
+ extra_rdoc_files: []
120
+ files:
121
+ - .gitignore
122
+ - .travis.yml
123
+ - Gemfile
57
124
  - History.txt
58
- - Manifest.txt
59
- - README.txt
125
+ - LICENSE.txt
126
+ - README.md
60
127
  - Rakefile
61
- - lib/data_element.rb
62
128
  - lib/twfy.rb
63
- - test/test_twfy.rb
64
- - test/test_twfy_chain.rb
65
- - test/api_key
66
- has_rdoc: true
67
- homepage: http://twfy.rubyforge.org
129
+ - lib/twfy/api.rb
130
+ - lib/twfy/client.rb
131
+ - lib/twfy/commands.rb
132
+ - lib/twfy/constituency.rb
133
+ - lib/twfy/data_element.rb
134
+ - lib/twfy/geometry.rb
135
+ - lib/twfy/mp.rb
136
+ - lib/twfy/validation.rb
137
+ - lib/twfy/version.rb
138
+ - test/fixtures/vcr_cassettes/client_test.yml
139
+ - test/fixtures/vcr_cassettes/data_element_test.yml
140
+ - test/lib/twfy/client_test.rb
141
+ - test/lib/twfy/data_element_test.rb
142
+ - test/test_helper.rb
143
+ - twfy.gemspec
144
+ homepage: http://github.com/bruce/twfy
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
68
148
  post_install_message:
69
- rdoc_options:
70
- - --main
71
- - README.txt
72
- require_paths:
149
+ rdoc_options: []
150
+ require_paths:
73
151
  - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
79
- version:
80
- required_rubygems_version: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: "0"
85
- version:
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
86
162
  requirements: []
87
-
88
- rubyforge_project: twfy
89
- rubygems_version: 1.2.0
163
+ rubyforge_project:
164
+ rubygems_version: 2.0.3
90
165
  signing_key:
91
- specification_version: 2
92
- summary: Ruby library to interface with the TheyWorkForYou(.com) API; an information source on Parliament
93
- test_files:
94
- - test/test_twfy.rb
95
- - test/test_twfy_chain.rb
166
+ specification_version: 4
167
+ summary: Ruby library to interface with the TheyWorkForYou API. TheyWorkForYou.com
168
+ is a non-partisan, volunteer-run website which aims to make it easy for people to
169
+ keep tabs on their elected and unelected representatives in Parliament.
170
+ test_files:
171
+ - test/fixtures/vcr_cassettes/client_test.yml
172
+ - test/fixtures/vcr_cassettes/data_element_test.yml
173
+ - test/lib/twfy/client_test.rb
174
+ - test/lib/twfy/data_element_test.rb
175
+ - test/test_helper.rb
data/Manifest.txt DELETED
@@ -1,9 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- lib/data_element.rb
6
- lib/twfy.rb
7
- test/test_twfy.rb
8
- test/test_twfy_chain.rb
9
- test/api_key
data/README.txt DELETED
@@ -1,108 +0,0 @@
1
- twfy
2
- by Bruce Williams (http://codefluency.com)
3
- and Martin Owen (http://martinowen.net)
4
-
5
- == DESCRIPTION:
6
-
7
- Ruby library to interface with the TheyWorkForYou API.
8
-
9
- From their website:
10
-
11
- "TheyWorkForYou.com is a non-partisan, volunteer-run website which aims to make it easy
12
- for people to keep tabs on their elected and unelected representatives in Parliament."
13
-
14
- == FEATURES/PROBLEMS:
15
-
16
- All services [currently] provided by the API are supported.
17
-
18
- The Ruby API closely mirrors that of TWFY, with the exception that the client
19
- methods are in lowercase and don't include the 'get' prefix.
20
-
21
- Some examples:
22
-
23
- getComments:: comments
24
- getMPs:: mps
25
- getMPInfo:: mp_info
26
-
27
- Please submit bug reports to the RubyForge tracker via the project's homepage at
28
- http://rubyforge.org/projects/twfy
29
-
30
- == SYNOPSIS:
31
-
32
- Use is very easy.
33
-
34
- === Get a Client
35
-
36
- require 'twfy'
37
- client = Twfy::Client.new(<YOUR API KEY HERE>)
38
-
39
- Note that the Twfy::Client constructor in version 1.0.1 of the binding requires an API Key
40
- string. If you don't have one they are available at http://www.theyworkforyou.com/api/key
41
-
42
- === Call API methods directly on client
43
-
44
- puts client.constituency(:postcode=>'IP6 9PN').name
45
- # => Central Suffolk & North Ipswich
46
-
47
- mp = client.mp(:postcode=>'IP6 9PN')
48
- puts mp.full_name
49
- # => Michael Lord
50
-
51
- # Get a *lot* of info about this MP
52
- info = client.mp_info(:id=>mp.person_id)
53
-
54
- # Get a sorted list of all the parties in the House of Lords
55
- client.lords.map{|l| l.party}.uniq.sort
56
- #=> ["Bishop", "Conservative", "Crossbench", "DUP", "Green", "Labour", "Liberal Democrat", "Other"]
57
-
58
- # Get number of debates in the House of Commons mentioning 'Iraq'
59
- number = client.debates(:type=>'commons',:search=>'Iraq').info['total_results']
60
-
61
- === Daisy chaining
62
-
63
- A few methods on the client return non-OpenStruct instances that support daisy chaining. Using these to access related data more naturally (with caching).
64
-
65
- Here are some examples
66
-
67
- # Get the MP for the last constituency (if you sort them alphabetically)
68
- mp = client.constituencies.sort_by{|c| c.name }.last.mp
69
- # get the geometry information for that constituency (coming from the MP)
70
- geometry = mp.constituency.geometry
71
-
72
- # An overkill example showing caching (no services are called here, since
73
- # the results have already been cached from above)
74
- mp = mp.constituency.mp.constituency.geometry.constituency.mp
75
-
76
- # These return equivalent results (Note how much easier the first is)
77
- info1 = mp.info # this is cached for subsequent calls
78
- info2 = client.mp_info(:id=>mp.person_id)
79
-
80
- # Get pages of debates mentioning 'medicine'
81
- debates1 = mp.debates(:search=>'medicine')
82
- debates2 = mp.debates(:search=>'medicine', :page=>2)
83
-
84
- See http://www.theyworkforyou.com/api/docs for API documentation.
85
-
86
- Please note that data pulled from the API is licensed separately;
87
- see the LICENSE portion of this README for further details.
88
-
89
- == REQUIREMENTS:
90
-
91
- + json library (available as a gem)
92
-
93
- == INSTALL:
94
-
95
- No special instructions.
96
-
97
- == LICENSE:
98
-
99
- This library uses the MIT License
100
- Copyright (c) 2006 Bruce Williams
101
-
102
- Data is licensed separately:
103
-
104
- The TheyWorkForYou license statement, from their website (http://www.theyworkforyou.com/api/), is:
105
-
106
- To use parliamentary material yourself (that's data returned from getDebates, getWrans, and getWMS), you will need to get a Parliamentary Licence from the Office of Public Sector Information. Our own data - lists of MPs, Lords, constituencies and so on - is available under the Creative Commons Attribution-ShareAlike license version 2.5.
107
-
108
- Non-commercial use is free, please contact us for commercial use.
data/lib/data_element.rb DELETED
@@ -1,101 +0,0 @@
1
- require 'uri'
2
- require 'date'
3
-
4
- module Twfy
5
-
6
- class DataElement
7
- @@conversions = {}
8
- class << self
9
- def convert(*fields,&block)
10
- fields.each do |field|
11
- @@conversions[field] = block
12
- end
13
- end
14
- def convert_to_date(*fields)
15
- fields.each do |field|
16
- convert field do |d|
17
- Date.parse(d)
18
- end
19
- end
20
- end
21
- end
22
-
23
- attr_reader :client
24
- def initialize(client, data={})
25
- @client = client
26
- data.each do |field,value|
27
- instance_variable_set("@#{field}", convert(field, value))
28
- unless self.respond_to?(field)
29
- self.class.send(:define_method, field) do
30
- instance_variable_get("@#{field}")
31
- end
32
- end
33
- end
34
- end
35
-
36
- def convert(field, value)
37
- if conversion = @@conversions[field.to_sym]
38
- args = [value]
39
- args.unshift self if conversion.arity == 2
40
- conversion.call(*args)
41
- else
42
- value
43
- end
44
- end
45
-
46
- end
47
-
48
- class MP < DataElement
49
-
50
- convert_to_date :entered_house, :left_house
51
- convert :image do |value|
52
- URI.parse("http://theyworkforyou.com#{value}")
53
- end
54
- convert :constituency do |source,value|
55
- Constituency.new(source.client, :name => value, :mp => source)
56
- end
57
-
58
- def in_office?
59
- @left_reason == 'still_in_office'
60
- end
61
-
62
- def info
63
- @info ||= @client.mp_info(:id => @person_id)
64
- end
65
-
66
- def debates(params={})
67
- @debates ||= {}
68
- @debates[params] ||= @client.debates(params.merge(:person=>@person_id, :type=>'commons'))
69
- end
70
-
71
- def comments(params={})
72
- @comments ||= {}
73
- @comments[params] ||= @client.comments(params.merge(:pid=>@person_id))
74
- end
75
-
76
- end
77
-
78
- class Constituency < DataElement
79
-
80
- def initialize(*args)
81
- super
82
- end
83
- def geometry
84
- @geometry ||= @client.geometry(:name=>@name)
85
- end
86
-
87
- def mp
88
- @mp ||= @client.mp(:constituency=>@name)
89
- end
90
-
91
- end
92
-
93
- class Geometry < DataElement
94
-
95
- convert :constituency do |source,value|
96
- Constituency.new(source.client, :name => value, :geometry => source)
97
- end
98
-
99
- end
100
-
101
- end
data/test/api_key DELETED
@@ -1 +0,0 @@
1
- B47i8vFYfgWvAa89eYErLWPF