pollster 0.2.3 → 2.0.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 (39) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +1 -1
  3. data/README.md +68 -111
  4. data/example.rb +128 -0
  5. data/lib/pollster.rb +46 -4
  6. data/lib/pollster/api.rb +655 -0
  7. data/lib/pollster/api_client.rb +400 -0
  8. data/lib/pollster/api_error.rb +26 -0
  9. data/lib/pollster/configuration.rb +184 -0
  10. data/lib/pollster/models/chart.rb +239 -0
  11. data/lib/pollster/models/chart_estimate.rb +226 -0
  12. data/lib/pollster/models/chart_estimate_lowess_parameters.rb +197 -0
  13. data/lib/pollster/models/chart_pollster_estimate_summary.rb +217 -0
  14. data/lib/pollster/models/chart_pollster_trendlines.rb +41 -0
  15. data/lib/pollster/models/inline_response_200.rb +208 -0
  16. data/lib/pollster/models/inline_response_200_3.rb +206 -0
  17. data/lib/pollster/models/inline_response_200_4.rb +208 -0
  18. data/lib/pollster/models/poll.rb +279 -0
  19. data/lib/pollster/models/poll_question.rb +198 -0
  20. data/lib/pollster/models/poll_question_responses.rb +197 -0
  21. data/lib/pollster/models/poll_question_sample_subpopulations.rb +209 -0
  22. data/lib/pollster/models/pollster_chart_poll_questions.rb +92 -0
  23. data/lib/pollster/models/question.rb +253 -0
  24. data/lib/pollster/models/question_poll_responses_clean.rb +93 -0
  25. data/lib/pollster/models/question_poll_responses_raw.rb +86 -0
  26. data/lib/pollster/models/question_responses.rb +207 -0
  27. data/lib/pollster/models/tag.rb +207 -0
  28. data/lib/pollster/version.rb +1 -1
  29. data/pollster.gemspec +17 -16
  30. metadata +85 -65
  31. data/.gitignore +0 -2
  32. data/Gemfile +0 -3
  33. data/Gemfile.lock +0 -19
  34. data/Rakefile +0 -8
  35. data/lib/pollster/base.rb +0 -45
  36. data/lib/pollster/chart.rb +0 -69
  37. data/lib/pollster/poll.rb +0 -47
  38. data/lib/pollster/question.rb +0 -19
  39. data/test/test_pollster.rb +0 -26
@@ -0,0 +1,207 @@
1
+ require 'date'
2
+
3
+ module Pollster
4
+
5
+ class Tag
6
+ # Unique tag identifier. For example: `2016-president`.
7
+ attr_accessor :slug
8
+
9
+ # Number of Questions with this Tag
10
+ attr_accessor :n_questions
11
+
12
+ # Number of Charts with this Tag (including Charts that represent Questions with this Tag).
13
+ attr_accessor :n_charts
14
+
15
+ # Number of Polls that include Questions with this Tag.
16
+ attr_accessor :n_polls
17
+
18
+
19
+ # Attribute mapping from ruby-style variable name to JSON key.
20
+ def self.attribute_map
21
+ {
22
+ :'slug' => :'slug',
23
+ :'n_questions' => :'n_questions',
24
+ :'n_charts' => :'n_charts',
25
+ :'n_polls' => :'n_polls'
26
+ }
27
+ end
28
+
29
+ # Attribute type mapping.
30
+ def self.swagger_types
31
+ {
32
+ :'slug' => :'String',
33
+ :'n_questions' => :'Integer',
34
+ :'n_charts' => :'Integer',
35
+ :'n_polls' => :'Integer'
36
+ }
37
+ end
38
+
39
+ # Initializes the object
40
+ # @param [Hash] attributes Model attributes in the form of hash
41
+ def initialize(attributes = {})
42
+ return unless attributes.is_a?(Hash)
43
+
44
+ # convert string to symbol for hash key
45
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
46
+
47
+ if attributes.has_key?(:'slug')
48
+ self.slug = attributes[:'slug']
49
+ end
50
+
51
+ if attributes.has_key?(:'n_questions')
52
+ self.n_questions = attributes[:'n_questions']
53
+ end
54
+
55
+ if attributes.has_key?(:'n_charts')
56
+ self.n_charts = attributes[:'n_charts']
57
+ end
58
+
59
+ if attributes.has_key?(:'n_polls')
60
+ self.n_polls = attributes[:'n_polls']
61
+ end
62
+
63
+ end
64
+
65
+ # Show invalid properties with the reasons. Usually used together with valid?
66
+ # @return Array for valid properies with the reasons
67
+ def list_invalid_properties
68
+ invalid_properties = Array.new
69
+ return invalid_properties
70
+ end
71
+
72
+ # Check to see if the all the properties in the model are valid
73
+ # @return true if the model is valid
74
+ def valid?
75
+ return true
76
+ end
77
+
78
+ # Checks equality by comparing each attribute.
79
+ # @param [Object] Object to be compared
80
+ def ==(o)
81
+ return true if self.equal?(o)
82
+ self.class == o.class &&
83
+ slug == o.slug &&
84
+ n_questions == o.n_questions &&
85
+ n_charts == o.n_charts &&
86
+ n_polls == o.n_polls
87
+ end
88
+
89
+ # @see the `==` method
90
+ # @param [Object] Object to be compared
91
+ def eql?(o)
92
+ self == o
93
+ end
94
+
95
+ # Calculates hash code according to all attributes.
96
+ # @return [Fixnum] Hash code
97
+ def hash
98
+ [slug, n_questions, n_charts, n_polls].hash
99
+ end
100
+
101
+ # Builds the object from hash
102
+ # @param [Hash] attributes Model attributes in the form of hash
103
+ # @return [Object] Returns the model itself
104
+ def build_from_hash(attributes)
105
+ return nil unless attributes.is_a?(Hash)
106
+ self.class.swagger_types.each_pair do |key, type|
107
+ if type =~ /\AArray<(.*)>/i
108
+ # check to ensure the input is an array given that the the attribute
109
+ # is documented as an array but the input is not
110
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
111
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
112
+ end
113
+ elsif !attributes[self.class.attribute_map[key]].nil?
114
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
115
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
116
+ end
117
+
118
+ self
119
+ end
120
+
121
+ # Deserializes the data based on type
122
+ # @param string type Data type
123
+ # @param string value Value to be deserialized
124
+ # @return [Object] Deserialized data
125
+ def _deserialize(type, value)
126
+ case type.to_sym
127
+ when :DateTime
128
+ DateTime.parse(value)
129
+ when :Date
130
+ Date.parse(value)
131
+ when :String
132
+ value.to_s
133
+ when :Integer
134
+ value.to_i
135
+ when :Float
136
+ value.to_f
137
+ when :BOOLEAN
138
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
139
+ true
140
+ else
141
+ false
142
+ end
143
+ when :Object
144
+ # generic object (usually a Hash), return directly
145
+ value
146
+ when /\AArray<(?<inner_type>.+)>\z/
147
+ inner_type = Regexp.last_match[:inner_type]
148
+ value.map { |v| _deserialize(inner_type, v) }
149
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
150
+ k_type = Regexp.last_match[:k_type]
151
+ v_type = Regexp.last_match[:v_type]
152
+ {}.tap do |hash|
153
+ value.each do |k, v|
154
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
155
+ end
156
+ end
157
+ else # model
158
+ temp_model = Pollster.const_get(type).new
159
+ temp_model.build_from_hash(value)
160
+ end
161
+ end
162
+
163
+ # Returns the string representation of the object
164
+ # @return [String] String presentation of the object
165
+ def to_s
166
+ to_hash.to_s
167
+ end
168
+
169
+ # to_body is an alias to to_hash (backward compatibility)
170
+ # @return [Hash] Returns the object in the form of hash
171
+ def to_body
172
+ to_hash
173
+ end
174
+
175
+ # Returns the object in the form of hash
176
+ # @return [Hash] Returns the object in the form of hash
177
+ def to_hash
178
+ hash = {}
179
+ self.class.attribute_map.each_pair do |attr, param|
180
+ value = self.send(attr)
181
+ next if value.nil?
182
+ hash[param] = _to_hash(value)
183
+ end
184
+ hash
185
+ end
186
+
187
+ # Outputs non-array value in the form of hash
188
+ # For object, use to_hash. Otherwise, just return the value
189
+ # @param [Object] value Any valid value
190
+ # @return [Hash] Returns the value in the form of hash
191
+ def _to_hash(value)
192
+ if value.is_a?(Array)
193
+ value.compact.map{ |v| _to_hash(v) }
194
+ elsif value.is_a?(Hash)
195
+ {}.tap do |hash|
196
+ value.each { |k, v| hash[k] = _to_hash(v) }
197
+ end
198
+ elsif value.respond_to? :to_hash
199
+ value.to_hash
200
+ else
201
+ value
202
+ end
203
+ end
204
+
205
+ end
206
+
207
+ end
@@ -1,3 +1,3 @@
1
1
  module Pollster
2
- VERSION = '0.2.3'
2
+ VERSION = "2.0.0"
3
3
  end
@@ -1,22 +1,23 @@
1
- # -*- encoding: utf-8 -*-
2
1
  $:.push File.expand_path("../lib", __FILE__)
3
- require 'pollster/version'
2
+ require "pollster/version"
4
3
 
5
4
  Gem::Specification.new do |s|
6
- s.name = 'pollster'
7
- s.version = Pollster::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ["Jay Boice", "Aaron Bycoffe", "Andrei Scheinkman"]
10
- s.email = ["jay.boice@huffingtonpost.com", "bycoffe@huffingtonpost.com"]
11
- s.homepage = "http://github.com/huffpostdata/ruby-pollster"
12
- s.summary = "Ruby library for accessing the Pollster API"
13
- s.description = "A Ruby library for accessing the Pollster API."
5
+ s.name = "pollster"
6
+ s.version = Pollster::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Adam Hooper"]
9
+ s.email = ["adam.hooper@huffingtonpost.com"]
10
+ s.homepage = "https://github.com/huffpostdata/ruby-pollster"
11
+ s.summary = "Pollster API Ruby Gem"
12
+ s.description = "Download election-related polling data from Pollster."
13
+ s.license = "CC-BY-NC-SA-3.0"
14
+ s.required_ruby_version = ">= 1.9"
14
15
 
15
- s.files = `git ls-files`.split("\n")
16
- s.require_paths = ['lib']
16
+ s.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
17
+ s.add_runtime_dependency 'ruby-immutable-struct', '~> 1.0', '>= 1.0.1'
17
18
 
18
- s.add_dependency 'json'
19
-
20
- s.add_development_dependency "rdoc"
19
+ s.files = `find *`.split("\n").uniq.sort.select{|f| !f.empty? }
20
+ s.test_files = `find spec/*`.split("\n")
21
+ s.executables = []
22
+ s.require_paths = ["lib"]
21
23
  end
22
-
metadata CHANGED
@@ -1,92 +1,112 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pollster
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
6
5
  platform: ruby
7
- authors:
8
- - Jay Boice
9
- - Aaron Bycoffe
10
- - Andrei Scheinkman
6
+ authors:
7
+ - Adam Hooper
11
8
  autorequire:
12
9
  bindir: bin
13
10
  cert_chain: []
14
-
15
- date: 2012-09-10 00:00:00 Z
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
18
- name: json
11
+ date: 2017-01-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: typhoeus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.1
23
+ type: :runtime
19
24
  prerelease: false
20
- requirement: &id001 !ruby/object:Gem::Requirement
21
- none: false
22
- requirements:
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: ruby-immutable-struct
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
23
40
  - - ">="
24
- - !ruby/object:Gem::Version
25
- version: "0"
41
+ - !ruby/object:Gem::Version
42
+ version: 1.0.1
26
43
  type: :runtime
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: rdoc
30
44
  prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
32
- none: false
33
- requirements:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
34
50
  - - ">="
35
- - !ruby/object:Gem::Version
36
- version: "0"
37
- type: :development
38
- version_requirements: *id002
39
- description: A Ruby library for accessing the Pollster API.
40
- email:
41
- - jay.boice@huffingtonpost.com
42
- - bycoffe@huffingtonpost.com
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.1
53
+ description: Download election-related polling data from Pollster.
54
+ email:
55
+ - adam.hooper@huffingtonpost.com
43
56
  executables: []
44
-
45
57
  extensions: []
46
-
47
58
  extra_rdoc_files: []
48
-
49
- files:
50
- - .gitignore
51
- - Gemfile
52
- - Gemfile.lock
59
+ files:
53
60
  - LICENSE
54
61
  - README.md
55
- - Rakefile
62
+ - example.rb
56
63
  - lib/pollster.rb
57
- - lib/pollster/base.rb
58
- - lib/pollster/chart.rb
59
- - lib/pollster/poll.rb
60
- - lib/pollster/question.rb
64
+ - lib/pollster/api.rb
65
+ - lib/pollster/api_client.rb
66
+ - lib/pollster/api_error.rb
67
+ - lib/pollster/configuration.rb
68
+ - lib/pollster/models/chart.rb
69
+ - lib/pollster/models/chart_estimate.rb
70
+ - lib/pollster/models/chart_estimate_lowess_parameters.rb
71
+ - lib/pollster/models/chart_pollster_estimate_summary.rb
72
+ - lib/pollster/models/chart_pollster_trendlines.rb
73
+ - lib/pollster/models/inline_response_200.rb
74
+ - lib/pollster/models/inline_response_200_3.rb
75
+ - lib/pollster/models/inline_response_200_4.rb
76
+ - lib/pollster/models/poll.rb
77
+ - lib/pollster/models/poll_question.rb
78
+ - lib/pollster/models/poll_question_responses.rb
79
+ - lib/pollster/models/poll_question_sample_subpopulations.rb
80
+ - lib/pollster/models/pollster_chart_poll_questions.rb
81
+ - lib/pollster/models/question.rb
82
+ - lib/pollster/models/question_poll_responses_clean.rb
83
+ - lib/pollster/models/question_poll_responses_raw.rb
84
+ - lib/pollster/models/question_responses.rb
85
+ - lib/pollster/models/tag.rb
61
86
  - lib/pollster/version.rb
62
87
  - pollster.gemspec
63
- - test/test_pollster.rb
64
- homepage: http://github.com/huffpostdata/ruby-pollster
65
- licenses: []
66
-
88
+ homepage: https://github.com/huffpostdata/ruby-pollster
89
+ licenses:
90
+ - CC-BY-NC-SA-3.0
91
+ metadata: {}
67
92
  post_install_message:
68
93
  rdoc_options: []
69
-
70
- require_paths:
94
+ require_paths:
71
95
  - lib
72
- required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
75
98
  - - ">="
76
- - !ruby/object:Gem::Version
77
- version: "0"
78
- required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
- requirements:
99
+ - !ruby/object:Gem::Version
100
+ version: '1.9'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
81
103
  - - ">="
82
- - !ruby/object:Gem::Version
83
- version: "0"
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
84
106
  requirements: []
85
-
86
107
  rubyforge_project:
87
- rubygems_version: 1.8.11
108
+ rubygems_version: 2.6.8
88
109
  signing_key:
89
- specification_version: 3
90
- summary: Ruby library for accessing the Pollster API
110
+ specification_version: 4
111
+ summary: Pollster API Ruby Gem
91
112
  test_files: []
92
-
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *.swp
2
- *.gem
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec
@@ -1,19 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- pollster (0.1.0)
5
- json
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- json (1.7.3)
11
- rdoc (3.12)
12
- json (~> 1.4)
13
-
14
- PLATFORMS
15
- ruby
16
-
17
- DEPENDENCIES
18
- pollster!
19
- rdoc