aylien_news_api 0.2.0 → 4.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 (155) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +7 -1
  3. data/README.md +36 -47
  4. data/Rakefile +10 -0
  5. data/aylien_news_api.gemspec +25 -32
  6. data/docs/Author.md +12 -1
  7. data/docs/Autocomplete.md +10 -0
  8. data/docs/Autocompletes.md +9 -0
  9. data/docs/Category.md +19 -3
  10. data/docs/CategoryLinks.md +11 -1
  11. data/docs/CategoryTaxonomy.md +16 -0
  12. data/docs/Cluster.md +29 -0
  13. data/docs/Clusters.md +21 -0
  14. data/docs/Coverages.md +16 -4
  15. data/docs/DefaultApi.md +1310 -576
  16. data/docs/Entities.md +11 -1
  17. data/docs/Entity.md +16 -3
  18. data/docs/EntityLinks.md +9 -0
  19. data/docs/Error.md +16 -2
  20. data/docs/ErrorLinks.md +9 -0
  21. data/docs/Errors.md +9 -0
  22. data/docs/HistogramInterval.md +10 -0
  23. data/docs/Histograms.md +20 -3
  24. data/docs/Location.md +13 -2
  25. data/docs/Media.md +19 -1
  26. data/docs/MediaFormat.md +16 -0
  27. data/docs/MediaType.md +16 -0
  28. data/docs/Rank.md +21 -0
  29. data/docs/Rankings.md +17 -0
  30. data/docs/RelatedStories.md +14 -3
  31. data/docs/RepresentativeStory.md +23 -0
  32. data/docs/Scope.md +15 -3
  33. data/docs/ScopeLevel.md +16 -0
  34. data/docs/Sentiment.md +11 -1
  35. data/docs/SentimentPolarity.md +16 -0
  36. data/docs/Sentiments.md +12 -2
  37. data/docs/ShareCount.md +10 -0
  38. data/docs/ShareCounts.md +12 -0
  39. data/docs/Source.md +27 -3
  40. data/docs/Stories.md +15 -2
  41. data/docs/Story.md +48 -16
  42. data/docs/StoryCluster.md +14 -1
  43. data/docs/StoryLinks.md +14 -1
  44. data/docs/StoryTranslation.md +19 -0
  45. data/docs/StoryTranslations.md +17 -0
  46. data/docs/StoryTranslationsEn.md +21 -0
  47. data/docs/Summary.md +9 -0
  48. data/docs/TimeSeries.md +11 -1
  49. data/docs/TimeSeriesList.md +15 -3
  50. data/docs/Trend.md +11 -1
  51. data/docs/Trends.md +15 -1
  52. data/git_push.sh +58 -0
  53. data/lib/aylien_news_api.rb +23 -14
  54. data/lib/aylien_news_api/api/default_api.rb +2755 -892
  55. data/lib/aylien_news_api/api_client.rb +141 -102
  56. data/lib/aylien_news_api/api_error.rb +37 -18
  57. data/lib/aylien_news_api/configuration.rb +94 -43
  58. data/lib/aylien_news_api/models/author.rb +69 -53
  59. data/lib/aylien_news_api/models/autocomplete.rb +55 -39
  60. data/lib/aylien_news_api/models/autocompletes.rb +54 -38
  61. data/lib/aylien_news_api/models/category.rb +88 -97
  62. data/lib/aylien_news_api/models/category_links.rb +66 -50
  63. data/lib/aylien_news_api/models/category_taxonomy.rb +36 -0
  64. data/lib/aylien_news_api/models/cluster.rb +265 -0
  65. data/lib/aylien_news_api/models/clusters.rb +229 -0
  66. data/lib/aylien_news_api/models/coverages.rb +79 -75
  67. data/lib/aylien_news_api/models/entities.rb +67 -51
  68. data/lib/aylien_news_api/models/entity.rb +100 -81
  69. data/lib/aylien_news_api/models/entity_links.rb +54 -38
  70. data/lib/aylien_news_api/models/error.rb +79 -63
  71. data/lib/aylien_news_api/models/error_links.rb +54 -38
  72. data/lib/aylien_news_api/models/errors.rb +54 -38
  73. data/lib/aylien_news_api/models/histogram_interval.rb +55 -39
  74. data/lib/aylien_news_api/models/histograms.rb +99 -63
  75. data/lib/aylien_news_api/models/location.rb +70 -54
  76. data/lib/aylien_news_api/models/media.rb +97 -76
  77. data/lib/aylien_news_api/models/media_format.rb +44 -0
  78. data/lib/aylien_news_api/models/media_type.rb +36 -0
  79. data/lib/aylien_news_api/models/rank.rb +227 -0
  80. data/lib/aylien_news_api/models/rankings.rb +208 -0
  81. data/lib/aylien_news_api/models/related_stories.rb +72 -68
  82. data/lib/aylien_news_api/models/representative_story.rb +237 -0
  83. data/lib/aylien_news_api/models/scope.rb +76 -94
  84. data/lib/aylien_news_api/models/scope_level.rb +37 -0
  85. data/lib/aylien_news_api/models/sentiment.rb +70 -84
  86. data/lib/aylien_news_api/models/sentiment_polarity.rb +37 -0
  87. data/lib/aylien_news_api/models/sentiments.rb +65 -51
  88. data/lib/aylien_news_api/models/share_count.rb +55 -39
  89. data/lib/aylien_news_api/models/share_counts.rb +57 -41
  90. data/lib/aylien_news_api/models/source.rb +129 -64
  91. data/lib/aylien_news_api/models/stories.rb +79 -55
  92. data/lib/aylien_news_api/models/story.rb +191 -161
  93. data/lib/aylien_news_api/models/story_cluster.rb +71 -55
  94. data/lib/aylien_news_api/models/story_links.rb +73 -47
  95. data/lib/aylien_news_api/models/story_translation.rb +217 -0
  96. data/lib/aylien_news_api/models/story_translations.rb +207 -0
  97. data/lib/aylien_news_api/models/story_translations_en.rb +227 -0
  98. data/lib/aylien_news_api/models/summary.rb +54 -38
  99. data/lib/aylien_news_api/models/time_series.rb +66 -50
  100. data/lib/aylien_news_api/models/time_series_list.rb +75 -59
  101. data/lib/aylien_news_api/models/trend.rb +66 -50
  102. data/lib/aylien_news_api/models/trends.rb +80 -44
  103. data/lib/aylien_news_api/version.rb +12 -14
  104. data/spec/api/default_api_spec.rb +620 -284
  105. data/spec/api_client_spec.rb +43 -161
  106. data/spec/configuration_spec.rb +22 -19
  107. data/spec/models/author_spec.rb +21 -34
  108. data/spec/models/autocomplete_spec.rb +17 -26
  109. data/spec/models/autocompletes_spec.rb +16 -21
  110. data/spec/models/category_links_spec.rb +19 -28
  111. data/spec/models/category_spec.rb +31 -50
  112. data/spec/models/category_taxonomy_spec.rb +35 -0
  113. data/spec/models/cluster_spec.rb +77 -0
  114. data/spec/models/clusters_spec.rb +53 -0
  115. data/spec/models/coverages_spec.rb +24 -45
  116. data/spec/models/entities_spec.rb +19 -28
  117. data/spec/models/entity_links_spec.rb +16 -21
  118. data/spec/models/entity_spec.rb +25 -46
  119. data/spec/models/error_links_spec.rb +16 -21
  120. data/spec/models/error_spec.rb +27 -52
  121. data/spec/models/errors_spec.rb +16 -21
  122. data/spec/models/histogram_interval_spec.rb +17 -26
  123. data/spec/models/histograms_spec.rb +36 -45
  124. data/spec/models/location_spec.rb +21 -34
  125. data/spec/models/media_format_spec.rb +35 -0
  126. data/spec/models/media_spec.rb +41 -26
  127. data/spec/models/media_type_spec.rb +35 -0
  128. data/spec/models/rank_spec.rb +53 -0
  129. data/spec/models/rankings_spec.rb +41 -0
  130. data/spec/models/related_stories_spec.rb +21 -38
  131. data/spec/models/representative_story_spec.rb +59 -0
  132. data/spec/models/scope_level_spec.rb +35 -0
  133. data/spec/models/scope_spec.rb +23 -40
  134. data/spec/models/sentiment_polarity_spec.rb +35 -0
  135. data/spec/models/sentiment_spec.rb +17 -26
  136. data/spec/models/sentiments_spec.rb +19 -28
  137. data/spec/models/share_count_spec.rb +17 -26
  138. data/spec/models/share_counts_spec.rb +19 -36
  139. data/spec/models/source_spec.rb +54 -49
  140. data/spec/models/stories_spec.rb +26 -33
  141. data/spec/models/story_cluster_spec.rb +23 -44
  142. data/spec/models/story_links_spec.rb +25 -32
  143. data/spec/models/story_spec.rb +65 -134
  144. data/spec/models/story_translation_spec.rb +47 -0
  145. data/spec/models/story_translations_en_spec.rb +53 -0
  146. data/spec/models/story_translations_spec.rb +41 -0
  147. data/spec/models/summary_spec.rb +16 -21
  148. data/spec/models/time_series_list_spec.rb +22 -39
  149. data/spec/models/time_series_spec.rb +19 -28
  150. data/spec/models/trend_spec.rb +19 -28
  151. data/spec/models/trends_spec.rb +30 -27
  152. data/spec/spec_helper.rb +11 -13
  153. metadata +95 -193
  154. data/Gemfile.lock +0 -65
  155. data/LICENSE +0 -13
@@ -1,21 +1,18 @@
1
- # Copyright 2016 Aylien, Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
1
+ =begin
2
+ #AYLIEN News API
3
+
4
+ #The AYLIEN News API is the most powerful way of sourcing, searching and syndicating analyzed and enriched news content. It is accessed by sending HTTP requests to our server, which returns information to your client.
5
+
6
+ The version of the OpenAPI document: 3.0
7
+ Contact: support@aylien.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.0-SNAPSHOT
10
+
11
+ =end
14
12
 
15
13
  require 'date'
16
14
 
17
15
  module AylienNewsApi
18
-
19
16
  class StoryCluster
20
17
  # A unique identification for the cluster
21
18
  attr_accessor :id
@@ -23,83 +20,94 @@ module AylienNewsApi
23
20
  # Suggested labels for the cluster
24
21
  attr_accessor :phrases
25
22
 
23
+ # The cluster score
24
+ attr_accessor :score
25
+
26
26
  # Size of the cluster
27
27
  attr_accessor :size
28
28
 
29
29
  # Story ids which are in the cluster
30
30
  attr_accessor :stories
31
31
 
32
- # The cluster score
33
- attr_accessor :score
34
-
35
-
36
32
  # Attribute mapping from ruby-style variable name to JSON key.
37
33
  def self.attribute_map
38
34
  {
39
35
  :'id' => :'id',
40
36
  :'phrases' => :'phrases',
37
+ :'score' => :'score',
41
38
  :'size' => :'size',
42
- :'stories' => :'stories',
43
- :'score' => :'score'
39
+ :'stories' => :'stories'
44
40
  }
45
41
  end
46
42
 
47
43
  # Attribute type mapping.
48
- def self.api_types
44
+ def self.openapi_types
49
45
  {
50
46
  :'id' => :'Integer',
51
47
  :'phrases' => :'Array<String>',
48
+ :'score' => :'Float',
52
49
  :'size' => :'Integer',
53
- :'stories' => :'Array<Integer>',
54
- :'score' => :'Float'
50
+ :'stories' => :'Array<Integer>'
55
51
  }
56
52
  end
57
53
 
54
+ # List of attributes with nullable: true
55
+ def self.openapi_nullable
56
+ Set.new([
57
+ ])
58
+ end
59
+
58
60
  # Initializes the object
59
61
  # @param [Hash] attributes Model attributes in the form of hash
60
62
  def initialize(attributes = {})
61
- return unless attributes.is_a?(Hash)
63
+ if (!attributes.is_a?(Hash))
64
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AylienNewsApi::StoryCluster` initialize method"
65
+ end
62
66
 
63
- # convert string to symbol for hash key
64
- attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
67
+ # check to see if the attribute exists and convert string to symbol for hash key
68
+ attributes = attributes.each_with_object({}) { |(k, v), h|
69
+ if (!self.class.attribute_map.key?(k.to_sym))
70
+ fail ArgumentError, "`#{k}` is not a valid attribute in `AylienNewsApi::StoryCluster`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
71
+ end
72
+ h[k.to_sym] = v
73
+ }
65
74
 
66
- if attributes.has_key?(:'id')
75
+ if attributes.key?(:'id')
67
76
  self.id = attributes[:'id']
68
77
  end
69
78
 
70
- if attributes.has_key?(:'phrases')
79
+ if attributes.key?(:'phrases')
71
80
  if (value = attributes[:'phrases']).is_a?(Array)
72
81
  self.phrases = value
73
82
  end
74
83
  end
75
84
 
76
- if attributes.has_key?(:'size')
85
+ if attributes.key?(:'score')
86
+ self.score = attributes[:'score']
87
+ end
88
+
89
+ if attributes.key?(:'size')
77
90
  self.size = attributes[:'size']
78
91
  end
79
92
 
80
- if attributes.has_key?(:'stories')
93
+ if attributes.key?(:'stories')
81
94
  if (value = attributes[:'stories']).is_a?(Array)
82
95
  self.stories = value
83
96
  end
84
97
  end
85
-
86
- if attributes.has_key?(:'score')
87
- self.score = attributes[:'score']
88
- end
89
-
90
98
  end
91
99
 
92
100
  # Show invalid properties with the reasons. Usually used together with valid?
93
- # @return Array for valid properies with the reasons
101
+ # @return Array for valid properties with the reasons
94
102
  def list_invalid_properties
95
103
  invalid_properties = Array.new
96
- return invalid_properties
104
+ invalid_properties
97
105
  end
98
106
 
99
107
  # Check to see if the all the properties in the model are valid
100
108
  # @return true if the model is valid
101
109
  def valid?
102
- return true
110
+ true
103
111
  end
104
112
 
105
113
  # Checks equality by comparing each attribute.
@@ -109,9 +117,9 @@ module AylienNewsApi
109
117
  self.class == o.class &&
110
118
  id == o.id &&
111
119
  phrases == o.phrases &&
120
+ score == o.score &&
112
121
  size == o.size &&
113
- stories == o.stories &&
114
- score == o.score
122
+ stories == o.stories
115
123
  end
116
124
 
117
125
  # @see the `==` method
@@ -121,9 +129,16 @@ module AylienNewsApi
121
129
  end
122
130
 
123
131
  # Calculates hash code according to all attributes.
124
- # @return [Fixnum] Hash code
132
+ # @return [Integer] Hash code
125
133
  def hash
126
- [id, phrases, size, stories, score].hash
134
+ [id, phrases, score, size, stories].hash
135
+ end
136
+
137
+ # Builds the object from hash
138
+ # @param [Hash] attributes Model attributes in the form of hash
139
+ # @return [Object] Returns the model itself
140
+ def self.build_from_hash(attributes)
141
+ new.build_from_hash(attributes)
127
142
  end
128
143
 
129
144
  # Builds the object from hash
@@ -131,12 +146,12 @@ module AylienNewsApi
131
146
  # @return [Object] Returns the model itself
132
147
  def build_from_hash(attributes)
133
148
  return nil unless attributes.is_a?(Hash)
134
- self.class.api_types.each_pair do |key, type|
135
- if type =~ /^Array<(.*)>/i
136
- # check to ensure the input is an array given that the the attribute
149
+ self.class.openapi_types.each_pair do |key, type|
150
+ if type =~ /\AArray<(.*)>/i
151
+ # check to ensure the input is an array given that the attribute
137
152
  # is documented as an array but the input is not
138
153
  if attributes[self.class.attribute_map[key]].is_a?(Array)
139
- self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
154
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
140
155
  end
141
156
  elsif !attributes[self.class.attribute_map[key]].nil?
142
157
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
@@ -162,8 +177,8 @@ module AylienNewsApi
162
177
  value.to_i
163
178
  when :Float
164
179
  value.to_f
165
- when :BOOLEAN
166
- if value.to_s =~ /^(true|t|yes|y|1)$/i
180
+ when :Boolean
181
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
167
182
  true
168
183
  else
169
184
  false
@@ -174,7 +189,7 @@ module AylienNewsApi
174
189
  when /\AArray<(?<inner_type>.+)>\z/
175
190
  inner_type = Regexp.last_match[:inner_type]
176
191
  value.map { |v| _deserialize(inner_type, v) }
177
- when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
192
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
178
193
  k_type = Regexp.last_match[:k_type]
179
194
  v_type = Regexp.last_match[:v_type]
180
195
  {}.tap do |hash|
@@ -183,8 +198,7 @@ module AylienNewsApi
183
198
  end
184
199
  end
185
200
  else # model
186
- temp_model = AylienNewsApi.const_get(type).new
187
- temp_model.build_from_hash(value)
201
+ AylienNewsApi.const_get(type).build_from_hash(value)
188
202
  end
189
203
  end
190
204
 
@@ -206,7 +220,11 @@ module AylienNewsApi
206
220
  hash = {}
207
221
  self.class.attribute_map.each_pair do |attr, param|
208
222
  value = self.send(attr)
209
- next if value.nil?
223
+ if value.nil?
224
+ is_nullable = self.class.openapi_nullable.include?(attr)
225
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
226
+ end
227
+
210
228
  hash[param] = _to_hash(value)
211
229
  end
212
230
  hash
@@ -218,7 +236,7 @@ module AylienNewsApi
218
236
  # @return [Hash] Returns the value in the form of hash
219
237
  def _to_hash(value)
220
238
  if value.is_a?(Array)
221
- value.compact.map{ |v| _to_hash(v) }
239
+ value.compact.map { |v| _to_hash(v) }
222
240
  elsif value.is_a?(Hash)
223
241
  {}.tap do |hash|
224
242
  value.each { |k, v| hash[k] = _to_hash(v) }
@@ -229,7 +247,5 @@ module AylienNewsApi
229
247
  value
230
248
  end
231
249
  end
232
-
233
250
  end
234
-
235
251
  end
@@ -1,83 +1,100 @@
1
- # Copyright 2016 Aylien, Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
1
+ =begin
2
+ #AYLIEN News API
3
+
4
+ #The AYLIEN News API is the most powerful way of sourcing, searching and syndicating analyzed and enriched news content. It is accessed by sending HTTP requests to our server, which returns information to your client.
5
+
6
+ The version of the OpenAPI document: 3.0
7
+ Contact: support@aylien.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.0.0-SNAPSHOT
10
+
11
+ =end
14
12
 
15
13
  require 'date'
16
14
 
17
15
  module AylienNewsApi
18
-
19
16
  class StoryLinks
17
+ # The story canonical URL
18
+ attr_accessor :canonical
19
+
20
20
  # The story permalink URL
21
21
  attr_accessor :permalink
22
22
 
23
23
  # The related stories URL
24
24
  attr_accessor :related_stories
25
25
 
26
- # The coverages URL
27
- attr_accessor :coverages
28
-
26
+ # The clusters endpoint URL for this story
27
+ attr_accessor :clusters
29
28
 
30
29
  # Attribute mapping from ruby-style variable name to JSON key.
31
30
  def self.attribute_map
32
31
  {
32
+ :'canonical' => :'canonical',
33
33
  :'permalink' => :'permalink',
34
34
  :'related_stories' => :'related_stories',
35
- :'coverages' => :'coverages'
35
+ :'clusters' => :'clusters'
36
36
  }
37
37
  end
38
38
 
39
39
  # Attribute type mapping.
40
- def self.api_types
40
+ def self.openapi_types
41
41
  {
42
+ :'canonical' => :'String',
42
43
  :'permalink' => :'String',
43
44
  :'related_stories' => :'String',
44
- :'coverages' => :'String'
45
+ :'clusters' => :'String'
45
46
  }
46
47
  end
47
48
 
49
+ # List of attributes with nullable: true
50
+ def self.openapi_nullable
51
+ Set.new([
52
+ ])
53
+ end
54
+
48
55
  # Initializes the object
49
56
  # @param [Hash] attributes Model attributes in the form of hash
50
57
  def initialize(attributes = {})
51
- return unless attributes.is_a?(Hash)
58
+ if (!attributes.is_a?(Hash))
59
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AylienNewsApi::StoryLinks` initialize method"
60
+ end
61
+
62
+ # check to see if the attribute exists and convert string to symbol for hash key
63
+ attributes = attributes.each_with_object({}) { |(k, v), h|
64
+ if (!self.class.attribute_map.key?(k.to_sym))
65
+ fail ArgumentError, "`#{k}` is not a valid attribute in `AylienNewsApi::StoryLinks`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
66
+ end
67
+ h[k.to_sym] = v
68
+ }
52
69
 
53
- # convert string to symbol for hash key
54
- attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
70
+ if attributes.key?(:'canonical')
71
+ self.canonical = attributes[:'canonical']
72
+ end
55
73
 
56
- if attributes.has_key?(:'permalink')
74
+ if attributes.key?(:'permalink')
57
75
  self.permalink = attributes[:'permalink']
58
76
  end
59
77
 
60
- if attributes.has_key?(:'related_stories')
78
+ if attributes.key?(:'related_stories')
61
79
  self.related_stories = attributes[:'related_stories']
62
80
  end
63
81
 
64
- if attributes.has_key?(:'coverages')
65
- self.coverages = attributes[:'coverages']
82
+ if attributes.key?(:'clusters')
83
+ self.clusters = attributes[:'clusters']
66
84
  end
67
-
68
85
  end
69
86
 
70
87
  # Show invalid properties with the reasons. Usually used together with valid?
71
- # @return Array for valid properies with the reasons
88
+ # @return Array for valid properties with the reasons
72
89
  def list_invalid_properties
73
90
  invalid_properties = Array.new
74
- return invalid_properties
91
+ invalid_properties
75
92
  end
76
93
 
77
94
  # Check to see if the all the properties in the model are valid
78
95
  # @return true if the model is valid
79
96
  def valid?
80
- return true
97
+ true
81
98
  end
82
99
 
83
100
  # Checks equality by comparing each attribute.
@@ -85,9 +102,10 @@ module AylienNewsApi
85
102
  def ==(o)
86
103
  return true if self.equal?(o)
87
104
  self.class == o.class &&
105
+ canonical == o.canonical &&
88
106
  permalink == o.permalink &&
89
107
  related_stories == o.related_stories &&
90
- coverages == o.coverages
108
+ clusters == o.clusters
91
109
  end
92
110
 
93
111
  # @see the `==` method
@@ -97,9 +115,16 @@ module AylienNewsApi
97
115
  end
98
116
 
99
117
  # Calculates hash code according to all attributes.
100
- # @return [Fixnum] Hash code
118
+ # @return [Integer] Hash code
101
119
  def hash
102
- [permalink, related_stories, coverages].hash
120
+ [canonical, permalink, related_stories, clusters].hash
121
+ end
122
+
123
+ # Builds the object from hash
124
+ # @param [Hash] attributes Model attributes in the form of hash
125
+ # @return [Object] Returns the model itself
126
+ def self.build_from_hash(attributes)
127
+ new.build_from_hash(attributes)
103
128
  end
104
129
 
105
130
  # Builds the object from hash
@@ -107,12 +132,12 @@ module AylienNewsApi
107
132
  # @return [Object] Returns the model itself
108
133
  def build_from_hash(attributes)
109
134
  return nil unless attributes.is_a?(Hash)
110
- self.class.api_types.each_pair do |key, type|
111
- if type =~ /^Array<(.*)>/i
112
- # check to ensure the input is an array given that the the attribute
135
+ self.class.openapi_types.each_pair do |key, type|
136
+ if type =~ /\AArray<(.*)>/i
137
+ # check to ensure the input is an array given that the attribute
113
138
  # is documented as an array but the input is not
114
139
  if attributes[self.class.attribute_map[key]].is_a?(Array)
115
- self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
140
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
116
141
  end
117
142
  elsif !attributes[self.class.attribute_map[key]].nil?
118
143
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
@@ -138,8 +163,8 @@ module AylienNewsApi
138
163
  value.to_i
139
164
  when :Float
140
165
  value.to_f
141
- when :BOOLEAN
142
- if value.to_s =~ /^(true|t|yes|y|1)$/i
166
+ when :Boolean
167
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
143
168
  true
144
169
  else
145
170
  false
@@ -150,7 +175,7 @@ module AylienNewsApi
150
175
  when /\AArray<(?<inner_type>.+)>\z/
151
176
  inner_type = Regexp.last_match[:inner_type]
152
177
  value.map { |v| _deserialize(inner_type, v) }
153
- when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
178
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
154
179
  k_type = Regexp.last_match[:k_type]
155
180
  v_type = Regexp.last_match[:v_type]
156
181
  {}.tap do |hash|
@@ -159,8 +184,7 @@ module AylienNewsApi
159
184
  end
160
185
  end
161
186
  else # model
162
- temp_model = AylienNewsApi.const_get(type).new
163
- temp_model.build_from_hash(value)
187
+ AylienNewsApi.const_get(type).build_from_hash(value)
164
188
  end
165
189
  end
166
190
 
@@ -182,7 +206,11 @@ module AylienNewsApi
182
206
  hash = {}
183
207
  self.class.attribute_map.each_pair do |attr, param|
184
208
  value = self.send(attr)
185
- next if value.nil?
209
+ if value.nil?
210
+ is_nullable = self.class.openapi_nullable.include?(attr)
211
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
212
+ end
213
+
186
214
  hash[param] = _to_hash(value)
187
215
  end
188
216
  hash
@@ -194,7 +222,7 @@ module AylienNewsApi
194
222
  # @return [Hash] Returns the value in the form of hash
195
223
  def _to_hash(value)
196
224
  if value.is_a?(Array)
197
- value.compact.map{ |v| _to_hash(v) }
225
+ value.compact.map { |v| _to_hash(v) }
198
226
  elsif value.is_a?(Hash)
199
227
  {}.tap do |hash|
200
228
  value.each { |k, v| hash[k] = _to_hash(v) }
@@ -205,7 +233,5 @@ module AylienNewsApi
205
233
  value
206
234
  end
207
235
  end
208
-
209
236
  end
210
-
211
237
  end