spotify-api-sdk 1.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 (178) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +30 -0
  3. data/README.md +107 -0
  4. data/lib/spotify_web_api/api_helper.rb +10 -0
  5. data/lib/spotify_web_api/client.rb +154 -0
  6. data/lib/spotify_web_api/configuration.rb +180 -0
  7. data/lib/spotify_web_api/controllers/albums_controller.rb +295 -0
  8. data/lib/spotify_web_api/controllers/artists_controller.rb +187 -0
  9. data/lib/spotify_web_api/controllers/audiobooks_controller.rb +258 -0
  10. data/lib/spotify_web_api/controllers/base_controller.rb +66 -0
  11. data/lib/spotify_web_api/controllers/categories_controller.rb +83 -0
  12. data/lib/spotify_web_api/controllers/chapters_controller.rb +82 -0
  13. data/lib/spotify_web_api/controllers/episodes_controller.rb +239 -0
  14. data/lib/spotify_web_api/controllers/genres_controller.rb +39 -0
  15. data/lib/spotify_web_api/controllers/markets_controller.rb +38 -0
  16. data/lib/spotify_web_api/controllers/o_auth_authorization_controller.rb +82 -0
  17. data/lib/spotify_web_api/controllers/player_controller.rb +509 -0
  18. data/lib/spotify_web_api/controllers/playlists_controller.rb +521 -0
  19. data/lib/spotify_web_api/controllers/search_controller.rb +60 -0
  20. data/lib/spotify_web_api/controllers/shows_controller.rb +261 -0
  21. data/lib/spotify_web_api/controllers/tracks_controller.rb +491 -0
  22. data/lib/spotify_web_api/controllers/users_controller.rb +396 -0
  23. data/lib/spotify_web_api/exceptions/api_exception.rb +10 -0
  24. data/lib/spotify_web_api/exceptions/bad_request_exception.rb +32 -0
  25. data/lib/spotify_web_api/exceptions/forbidden_exception.rb +32 -0
  26. data/lib/spotify_web_api/exceptions/not_found_exception.rb +32 -0
  27. data/lib/spotify_web_api/exceptions/o_auth_provider_exception.rb +48 -0
  28. data/lib/spotify_web_api/exceptions/too_many_requests_exception.rb +32 -0
  29. data/lib/spotify_web_api/exceptions/unauthorized_exception.rb +32 -0
  30. data/lib/spotify_web_api/http/api_response.rb +21 -0
  31. data/lib/spotify_web_api/http/auth/o_auth2.rb +146 -0
  32. data/lib/spotify_web_api/http/http_call_back.rb +10 -0
  33. data/lib/spotify_web_api/http/http_method_enum.rb +10 -0
  34. data/lib/spotify_web_api/http/http_request.rb +10 -0
  35. data/lib/spotify_web_api/http/http_response.rb +10 -0
  36. data/lib/spotify_web_api/models/album_base.rb +168 -0
  37. data/lib/spotify_web_api/models/album_group_enum.rb +29 -0
  38. data/lib/spotify_web_api/models/album_object.rb +247 -0
  39. data/lib/spotify_web_api/models/album_restriction_object.rb +53 -0
  40. data/lib/spotify_web_api/models/album_type_enum.rb +26 -0
  41. data/lib/spotify_web_api/models/artist_discography_album_object.rb +194 -0
  42. data/lib/spotify_web_api/models/artist_object.rb +147 -0
  43. data/lib/spotify_web_api/models/audio_analysis_object.rb +156 -0
  44. data/lib/spotify_web_api/models/audio_features_object.rb +249 -0
  45. data/lib/spotify_web_api/models/audiobook_base.rb +245 -0
  46. data/lib/spotify_web_api/models/audiobook_object.rb +253 -0
  47. data/lib/spotify_web_api/models/author_object.rb +50 -0
  48. data/lib/spotify_web_api/models/base_model.rb +62 -0
  49. data/lib/spotify_web_api/models/categories.rb +110 -0
  50. data/lib/spotify_web_api/models/category_object.rb +82 -0
  51. data/lib/spotify_web_api/models/chapter_base.rb +237 -0
  52. data/lib/spotify_web_api/models/chapter_object.rb +245 -0
  53. data/lib/spotify_web_api/models/chapter_restriction_object.rb +59 -0
  54. data/lib/spotify_web_api/models/context_object.rb +78 -0
  55. data/lib/spotify_web_api/models/copyright_object.rb +60 -0
  56. data/lib/spotify_web_api/models/currently_playing_context_object.rb +137 -0
  57. data/lib/spotify_web_api/models/currently_playing_object.rb +109 -0
  58. data/lib/spotify_web_api/models/cursor_object.rb +59 -0
  59. data/lib/spotify_web_api/models/cursor_paged_artists.rb +48 -0
  60. data/lib/spotify_web_api/models/cursor_paging_object.rb +88 -0
  61. data/lib/spotify_web_api/models/cursor_paging_play_history_object.rb +106 -0
  62. data/lib/spotify_web_api/models/cursor_paging_simplified_artist_object.rb +106 -0
  63. data/lib/spotify_web_api/models/device_object.rb +126 -0
  64. data/lib/spotify_web_api/models/disallows_object.rb +140 -0
  65. data/lib/spotify_web_api/models/episode_base.rb +237 -0
  66. data/lib/spotify_web_api/models/episode_object.rb +246 -0
  67. data/lib/spotify_web_api/models/episode_restriction_object.rb +58 -0
  68. data/lib/spotify_web_api/models/error_object.rb +59 -0
  69. data/lib/spotify_web_api/models/explicit_content_settings_object.rb +61 -0
  70. data/lib/spotify_web_api/models/external_id_object.rb +72 -0
  71. data/lib/spotify_web_api/models/external_url_object.rb +51 -0
  72. data/lib/spotify_web_api/models/followers_object.rb +62 -0
  73. data/lib/spotify_web_api/models/image_object.rb +67 -0
  74. data/lib/spotify_web_api/models/include_external_enum.rb +23 -0
  75. data/lib/spotify_web_api/models/item_type1_enum.rb +20 -0
  76. data/lib/spotify_web_api/models/item_type2_enum.rb +23 -0
  77. data/lib/spotify_web_api/models/item_type3_enum.rb +23 -0
  78. data/lib/spotify_web_api/models/item_type_enum.rb +38 -0
  79. data/lib/spotify_web_api/models/linked_track_object.rb +89 -0
  80. data/lib/spotify_web_api/models/many_albums.rb +57 -0
  81. data/lib/spotify_web_api/models/many_artists.rb +57 -0
  82. data/lib/spotify_web_api/models/many_audio_features.rb +57 -0
  83. data/lib/spotify_web_api/models/many_audiobooks.rb +57 -0
  84. data/lib/spotify_web_api/models/many_chapters.rb +57 -0
  85. data/lib/spotify_web_api/models/many_devices.rb +57 -0
  86. data/lib/spotify_web_api/models/many_episodes.rb +57 -0
  87. data/lib/spotify_web_api/models/many_genres.rb +48 -0
  88. data/lib/spotify_web_api/models/many_simplified_shows.rb +57 -0
  89. data/lib/spotify_web_api/models/many_tracks.rb +57 -0
  90. data/lib/spotify_web_api/models/markets.rb +50 -0
  91. data/lib/spotify_web_api/models/me_albums_request.rb +55 -0
  92. data/lib/spotify_web_api/models/me_episodes_request.rb +52 -0
  93. data/lib/spotify_web_api/models/me_episodes_request1.rb +54 -0
  94. data/lib/spotify_web_api/models/me_following_request.rb +53 -0
  95. data/lib/spotify_web_api/models/me_following_request1.rb +55 -0
  96. data/lib/spotify_web_api/models/me_player_play_request.rb +89 -0
  97. data/lib/spotify_web_api/models/me_player_request.rb +63 -0
  98. data/lib/spotify_web_api/models/me_shows_request.rb +55 -0
  99. data/lib/spotify_web_api/models/me_tracks_request.rb +53 -0
  100. data/lib/spotify_web_api/models/me_tracks_request1.rb +55 -0
  101. data/lib/spotify_web_api/models/meta.rb +110 -0
  102. data/lib/spotify_web_api/models/mode_enum.rb +30 -0
  103. data/lib/spotify_web_api/models/narrator_object.rb +50 -0
  104. data/lib/spotify_web_api/models/o_auth_provider_error_enum.rb +45 -0
  105. data/lib/spotify_web_api/models/o_auth_scope_enum.rb +94 -0
  106. data/lib/spotify_web_api/models/o_auth_token.rb +96 -0
  107. data/lib/spotify_web_api/models/paged_albums.rb +48 -0
  108. data/lib/spotify_web_api/models/paged_categories.rb +48 -0
  109. data/lib/spotify_web_api/models/paging_artist_discography_album_object.rb +110 -0
  110. data/lib/spotify_web_api/models/paging_artist_object.rb +110 -0
  111. data/lib/spotify_web_api/models/paging_featured_playlist_object.rb +59 -0
  112. data/lib/spotify_web_api/models/paging_object.rb +93 -0
  113. data/lib/spotify_web_api/models/paging_playlist_object.rb +110 -0
  114. data/lib/spotify_web_api/models/paging_playlist_track_object.rb +110 -0
  115. data/lib/spotify_web_api/models/paging_saved_album_object.rb +110 -0
  116. data/lib/spotify_web_api/models/paging_saved_audiobook_object.rb +110 -0
  117. data/lib/spotify_web_api/models/paging_saved_episode_object.rb +110 -0
  118. data/lib/spotify_web_api/models/paging_saved_show_object.rb +110 -0
  119. data/lib/spotify_web_api/models/paging_saved_track_object.rb +110 -0
  120. data/lib/spotify_web_api/models/paging_simplified_album_object.rb +110 -0
  121. data/lib/spotify_web_api/models/paging_simplified_audiobook_object.rb +110 -0
  122. data/lib/spotify_web_api/models/paging_simplified_chapter_object.rb +110 -0
  123. data/lib/spotify_web_api/models/paging_simplified_episode_object.rb +110 -0
  124. data/lib/spotify_web_api/models/paging_simplified_show_object.rb +110 -0
  125. data/lib/spotify_web_api/models/paging_simplified_track_object.rb +110 -0
  126. data/lib/spotify_web_api/models/paging_track_object.rb +110 -0
  127. data/lib/spotify_web_api/models/play_history_object.rb +77 -0
  128. data/lib/spotify_web_api/models/playlist_object.rb +193 -0
  129. data/lib/spotify_web_api/models/playlist_owner_object.rb +109 -0
  130. data/lib/spotify_web_api/models/playlist_snapshot_id.rb +50 -0
  131. data/lib/spotify_web_api/models/playlist_track_object.rb +90 -0
  132. data/lib/spotify_web_api/models/playlist_tracks_ref_object.rb +60 -0
  133. data/lib/spotify_web_api/models/playlist_user_object.rb +98 -0
  134. data/lib/spotify_web_api/models/playlists_followers_request.rb +51 -0
  135. data/lib/spotify_web_api/models/playlists_request.rb +82 -0
  136. data/lib/spotify_web_api/models/playlists_tracks_request.rb +72 -0
  137. data/lib/spotify_web_api/models/playlists_tracks_request1.rb +97 -0
  138. data/lib/spotify_web_api/models/playlists_tracks_request2.rb +75 -0
  139. data/lib/spotify_web_api/models/private_user_object.rb +181 -0
  140. data/lib/spotify_web_api/models/public_user_object.rb +128 -0
  141. data/lib/spotify_web_api/models/queue_object.rb +60 -0
  142. data/lib/spotify_web_api/models/reason_enum.rb +29 -0
  143. data/lib/spotify_web_api/models/recommendation_seed_object.rb +104 -0
  144. data/lib/spotify_web_api/models/recommendations_object.rb +74 -0
  145. data/lib/spotify_web_api/models/release_date_precision_enum.rb +26 -0
  146. data/lib/spotify_web_api/models/resume_point_object.rb +60 -0
  147. data/lib/spotify_web_api/models/saved_album_object.rb +73 -0
  148. data/lib/spotify_web_api/models/saved_audiobook_object.rb +73 -0
  149. data/lib/spotify_web_api/models/saved_episode_object.rb +70 -0
  150. data/lib/spotify_web_api/models/saved_show_object.rb +73 -0
  151. data/lib/spotify_web_api/models/saved_track_object.rb +73 -0
  152. data/lib/spotify_web_api/models/search_items.rb +107 -0
  153. data/lib/spotify_web_api/models/section_object.rb +180 -0
  154. data/lib/spotify_web_api/models/segment_object.rb +166 -0
  155. data/lib/spotify_web_api/models/show_base.rb +211 -0
  156. data/lib/spotify_web_api/models/show_object.rb +219 -0
  157. data/lib/spotify_web_api/models/simplified_album_object.rb +186 -0
  158. data/lib/spotify_web_api/models/simplified_artist_object.rb +98 -0
  159. data/lib/spotify_web_api/models/simplified_playlist_object.rb +184 -0
  160. data/lib/spotify_web_api/models/simplified_track_object.rb +227 -0
  161. data/lib/spotify_web_api/models/time_interval_object.rb +68 -0
  162. data/lib/spotify_web_api/models/track.rb +331 -0
  163. data/lib/spotify_web_api/models/track1.rb +50 -0
  164. data/lib/spotify_web_api/models/track_object.rb +265 -0
  165. data/lib/spotify_web_api/models/track_restriction_object.rb +58 -0
  166. data/lib/spotify_web_api/models/type2_enum.rb +20 -0
  167. data/lib/spotify_web_api/models/type3_enum.rb +20 -0
  168. data/lib/spotify_web_api/models/type4_enum.rb +20 -0
  169. data/lib/spotify_web_api/models/type6_enum.rb +20 -0
  170. data/lib/spotify_web_api/models/type7_enum.rb +20 -0
  171. data/lib/spotify_web_api/models/type8_enum.rb +20 -0
  172. data/lib/spotify_web_api/models/type9_enum.rb +20 -0
  173. data/lib/spotify_web_api/models/type_enum.rb +20 -0
  174. data/lib/spotify_web_api/models/users_playlists_request.rb +87 -0
  175. data/lib/spotify_web_api/utilities/date_time_helper.rb +11 -0
  176. data/lib/spotify_web_api/utilities/file_wrapper.rb +16 -0
  177. data/lib/spotify_web_api.rb +198 -0
  178. metadata +264 -0
@@ -0,0 +1,227 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # SimplifiedTrackObject Model.
8
+ class SimplifiedTrackObject < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The artists who performed the track. Each artist object includes a link in
13
+ # `href` to more detailed information about the artist.
14
+ # @return [Array[SimplifiedArtistObject]]
15
+ attr_accessor :artists
16
+
17
+ # A list of the countries in which the track can be played, identified by
18
+ # their [ISO 3166-1
19
+ # alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.
20
+ # @return [Array[String]]
21
+ attr_accessor :available_markets
22
+
23
+ # The disc number (usually `1` unless the album consists of more than one
24
+ # disc).
25
+ # @return [Integer]
26
+ attr_accessor :disc_number
27
+
28
+ # The track length in milliseconds.
29
+ # @return [Integer]
30
+ attr_accessor :duration_ms
31
+
32
+ # Whether or not the track has explicit lyrics ( `true` = yes it does;
33
+ # `false` = no it does not OR unknown).
34
+ # @return [TrueClass | FalseClass]
35
+ attr_accessor :explicit
36
+
37
+ # External URLs for this track.
38
+ # @return [ExternalUrlObject]
39
+ attr_accessor :external_urls
40
+
41
+ # A link to the Web API endpoint providing full details of the track.
42
+ # @return [String]
43
+ attr_accessor :href
44
+
45
+ # The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the
46
+ # track.
47
+ # @return [String]
48
+ attr_accessor :id
49
+
50
+ # Part of the response when [Track
51
+ # Relinking](/documentation/web-api/concepts/track-relinking/) is applied.
52
+ # If `true`, the track is playable in the given market. Otherwise `false`.
53
+ # @return [TrueClass | FalseClass]
54
+ attr_accessor :is_playable
55
+
56
+ # Part of the response when [Track
57
+ # Relinking](/documentation/web-api/concepts/track-relinking/) is applied
58
+ # and is only part of the response if the track linking, in fact, exists.
59
+ # The requested track has been replaced with a different track. The track in
60
+ # the `linked_from` object contains information about the originally
61
+ # requested track.
62
+ # @return [LinkedTrackObject]
63
+ attr_accessor :linked_from
64
+
65
+ # Included in the response when a content restriction is applied.
66
+ # @return [TrackRestrictionObject]
67
+ attr_accessor :restrictions
68
+
69
+ # The name of the track.
70
+ # @return [String]
71
+ attr_accessor :name
72
+
73
+ # A URL to a 30 second preview (MP3 format) of the track.
74
+ # @return [String]
75
+ attr_accessor :preview_url
76
+
77
+ # The number of the track. If an album has several discs, the track number
78
+ # is the number on the specified disc.
79
+ # @return [Integer]
80
+ attr_accessor :track_number
81
+
82
+ # The object type: "track".
83
+ # @return [String]
84
+ attr_accessor :type
85
+
86
+ # The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for
87
+ # the track.
88
+ # @return [String]
89
+ attr_accessor :uri
90
+
91
+ # Whether or not the track is from a local file.
92
+ # @return [TrueClass | FalseClass]
93
+ attr_accessor :is_local
94
+
95
+ # A mapping from model property names to API property names.
96
+ def self.names
97
+ @_hash = {} if @_hash.nil?
98
+ @_hash['artists'] = 'artists'
99
+ @_hash['available_markets'] = 'available_markets'
100
+ @_hash['disc_number'] = 'disc_number'
101
+ @_hash['duration_ms'] = 'duration_ms'
102
+ @_hash['explicit'] = 'explicit'
103
+ @_hash['external_urls'] = 'external_urls'
104
+ @_hash['href'] = 'href'
105
+ @_hash['id'] = 'id'
106
+ @_hash['is_playable'] = 'is_playable'
107
+ @_hash['linked_from'] = 'linked_from'
108
+ @_hash['restrictions'] = 'restrictions'
109
+ @_hash['name'] = 'name'
110
+ @_hash['preview_url'] = 'preview_url'
111
+ @_hash['track_number'] = 'track_number'
112
+ @_hash['type'] = 'type'
113
+ @_hash['uri'] = 'uri'
114
+ @_hash['is_local'] = 'is_local'
115
+ @_hash
116
+ end
117
+
118
+ # An array for optional fields
119
+ def self.optionals
120
+ %w[
121
+ artists
122
+ available_markets
123
+ disc_number
124
+ duration_ms
125
+ explicit
126
+ external_urls
127
+ href
128
+ id
129
+ is_playable
130
+ linked_from
131
+ restrictions
132
+ name
133
+ preview_url
134
+ track_number
135
+ type
136
+ uri
137
+ is_local
138
+ ]
139
+ end
140
+
141
+ # An array for nullable fields
142
+ def self.nullables
143
+ %w[
144
+ preview_url
145
+ ]
146
+ end
147
+
148
+ def initialize(artists = SKIP, available_markets = SKIP, disc_number = SKIP,
149
+ duration_ms = SKIP, explicit = SKIP, external_urls = SKIP,
150
+ href = SKIP, id = SKIP, is_playable = SKIP,
151
+ linked_from = SKIP, restrictions = SKIP, name = SKIP,
152
+ preview_url = SKIP, track_number = SKIP, type = SKIP,
153
+ uri = SKIP, is_local = SKIP)
154
+ @artists = artists unless artists == SKIP
155
+ @available_markets = available_markets unless available_markets == SKIP
156
+ @disc_number = disc_number unless disc_number == SKIP
157
+ @duration_ms = duration_ms unless duration_ms == SKIP
158
+ @explicit = explicit unless explicit == SKIP
159
+ @external_urls = external_urls unless external_urls == SKIP
160
+ @href = href unless href == SKIP
161
+ @id = id unless id == SKIP
162
+ @is_playable = is_playable unless is_playable == SKIP
163
+ @linked_from = linked_from unless linked_from == SKIP
164
+ @restrictions = restrictions unless restrictions == SKIP
165
+ @name = name unless name == SKIP
166
+ @preview_url = preview_url unless preview_url == SKIP
167
+ @track_number = track_number unless track_number == SKIP
168
+ @type = type unless type == SKIP
169
+ @uri = uri unless uri == SKIP
170
+ @is_local = is_local unless is_local == SKIP
171
+ end
172
+
173
+ # Creates an instance of the object from a hash.
174
+ def self.from_hash(hash)
175
+ return nil unless hash
176
+
177
+ # Extract variables from the hash.
178
+ # Parameter is an array, so we need to iterate through it
179
+ artists = nil
180
+ unless hash['artists'].nil?
181
+ artists = []
182
+ hash['artists'].each do |structure|
183
+ artists << (SimplifiedArtistObject.from_hash(structure) if structure)
184
+ end
185
+ end
186
+
187
+ artists = SKIP unless hash.key?('artists')
188
+ available_markets =
189
+ hash.key?('available_markets') ? hash['available_markets'] : SKIP
190
+ disc_number = hash.key?('disc_number') ? hash['disc_number'] : SKIP
191
+ duration_ms = hash.key?('duration_ms') ? hash['duration_ms'] : SKIP
192
+ explicit = hash.key?('explicit') ? hash['explicit'] : SKIP
193
+ external_urls = ExternalUrlObject.from_hash(hash['external_urls']) if hash['external_urls']
194
+ href = hash.key?('href') ? hash['href'] : SKIP
195
+ id = hash.key?('id') ? hash['id'] : SKIP
196
+ is_playable = hash.key?('is_playable') ? hash['is_playable'] : SKIP
197
+ linked_from = LinkedTrackObject.from_hash(hash['linked_from']) if hash['linked_from']
198
+ restrictions = TrackRestrictionObject.from_hash(hash['restrictions']) if
199
+ hash['restrictions']
200
+ name = hash.key?('name') ? hash['name'] : SKIP
201
+ preview_url = hash.key?('preview_url') ? hash['preview_url'] : SKIP
202
+ track_number = hash.key?('track_number') ? hash['track_number'] : SKIP
203
+ type = hash.key?('type') ? hash['type'] : SKIP
204
+ uri = hash.key?('uri') ? hash['uri'] : SKIP
205
+ is_local = hash.key?('is_local') ? hash['is_local'] : SKIP
206
+
207
+ # Create object from extracted values.
208
+ SimplifiedTrackObject.new(artists,
209
+ available_markets,
210
+ disc_number,
211
+ duration_ms,
212
+ explicit,
213
+ external_urls,
214
+ href,
215
+ id,
216
+ is_playable,
217
+ linked_from,
218
+ restrictions,
219
+ name,
220
+ preview_url,
221
+ track_number,
222
+ type,
223
+ uri,
224
+ is_local)
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,68 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # TimeIntervalObject Model.
8
+ class TimeIntervalObject < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The starting point (in seconds) of the time interval.
13
+ # @return [Float]
14
+ attr_accessor :start
15
+
16
+ # The duration (in seconds) of the time interval.
17
+ # @return [Float]
18
+ attr_accessor :duration
19
+
20
+ # The confidence, from 0.0 to 1.0, of the reliability of the interval.
21
+ # @return [Float]
22
+ attr_accessor :confidence
23
+
24
+ # A mapping from model property names to API property names.
25
+ def self.names
26
+ @_hash = {} if @_hash.nil?
27
+ @_hash['start'] = 'start'
28
+ @_hash['duration'] = 'duration'
29
+ @_hash['confidence'] = 'confidence'
30
+ @_hash
31
+ end
32
+
33
+ # An array for optional fields
34
+ def self.optionals
35
+ %w[
36
+ start
37
+ duration
38
+ confidence
39
+ ]
40
+ end
41
+
42
+ # An array for nullable fields
43
+ def self.nullables
44
+ []
45
+ end
46
+
47
+ def initialize(start = SKIP, duration = SKIP, confidence = SKIP)
48
+ @start = start unless start == SKIP
49
+ @duration = duration unless duration == SKIP
50
+ @confidence = confidence unless confidence == SKIP
51
+ end
52
+
53
+ # Creates an instance of the object from a hash.
54
+ def self.from_hash(hash)
55
+ return nil unless hash
56
+
57
+ # Extract variables from the hash.
58
+ start = hash.key?('start') ? hash['start'] : SKIP
59
+ duration = hash.key?('duration') ? hash['duration'] : SKIP
60
+ confidence = hash.key?('confidence') ? hash['confidence'] : SKIP
61
+
62
+ # Create object from extracted values.
63
+ TimeIntervalObject.new(start,
64
+ duration,
65
+ confidence)
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,331 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # Track Model.
8
+ class Track < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The exact number of audio samples analyzed from this track. See also
13
+ # `analysis_sample_rate`.
14
+ # @return [Integer]
15
+ attr_accessor :num_samples
16
+
17
+ # Length of the track in seconds.
18
+ # @return [Float]
19
+ attr_accessor :duration
20
+
21
+ # This field will always contain the empty string.
22
+ # @return [String]
23
+ attr_accessor :sample_md5
24
+
25
+ # An offset to the start of the region of the track that was analyzed. (As
26
+ # the entire track is analyzed, this should always be 0.)
27
+ # @return [Integer]
28
+ attr_accessor :offset_seconds
29
+
30
+ # The length of the region of the track was analyzed, if a subset of the
31
+ # track was analyzed. (As the entire track is analyzed, this should always
32
+ # be 0.)
33
+ # @return [Integer]
34
+ attr_accessor :window_seconds
35
+
36
+ # The sample rate used to decode and analyze this track. May differ from the
37
+ # actual sample rate of this track available on Spotify.
38
+ # @return [Integer]
39
+ attr_accessor :analysis_sample_rate
40
+
41
+ # The number of channels used for analysis. If 1, all channels are summed
42
+ # together to mono before analysis.
43
+ # @return [Integer]
44
+ attr_accessor :analysis_channels
45
+
46
+ # The time, in seconds, at which the track's fade-in period ends. If the
47
+ # track has no fade-in, this will be 0.0.
48
+ # @return [Float]
49
+ attr_accessor :end_of_fade_in
50
+
51
+ # The time, in seconds, at which the track's fade-out period starts. If the
52
+ # track has no fade-out, this should match the track's length.
53
+ # @return [Float]
54
+ attr_accessor :start_of_fade_out
55
+
56
+ # The overall loudness of a track in decibels (dB). Loudness values are
57
+ # averaged across the entire track and are useful for comparing relative
58
+ # loudness of tracks. Loudness is the quality of a sound that is the primary
59
+ # psychological correlate of physical strength (amplitude). Values typically
60
+ # range between -60 and 0 db.
61
+ # @return [Float]
62
+ attr_accessor :loudness
63
+
64
+ # The overall estimated tempo of a track in beats per minute (BPM). In
65
+ # musical terminology, tempo is the speed or pace of a given piece and
66
+ # derives directly from the average beat duration.
67
+ # @return [Float]
68
+ attr_accessor :tempo
69
+
70
+ # The confidence, from 0.0 to 1.0, of the reliability of the `tempo`.
71
+ # @return [Float]
72
+ attr_accessor :tempo_confidence
73
+
74
+ # An estimated time signature. The time signature (meter) is a notational
75
+ # convention to specify how many beats are in each bar (or measure). The
76
+ # time signature ranges from 3 to 7 indicating time signatures of "3/4", to
77
+ # "7/4".
78
+ # @return [Integer]
79
+ attr_accessor :time_signature
80
+
81
+ # The confidence, from 0.0 to 1.0, of the reliability of the
82
+ # `time_signature`.
83
+ # @return [Float]
84
+ attr_accessor :time_signature_confidence
85
+
86
+ # The key the track is in. Integers map to pitches using standard [Pitch
87
+ # Class notation](https://en.wikipedia.org/wiki/Pitch_class). E.g. 0 = C, 1
88
+ # = C♯/D♭, 2 = D, and so on. If no key was detected, the value is -1.
89
+ # @return [Integer]
90
+ attr_accessor :key
91
+
92
+ # The confidence, from 0.0 to 1.0, of the reliability of the `key`.
93
+ # @return [Float]
94
+ attr_accessor :key_confidence
95
+
96
+ # Mode indicates the modality (major or minor) of a track, the type of scale
97
+ # from which its melodic content is derived. Major is represented by 1 and
98
+ # minor is 0.
99
+ # @return [Integer]
100
+ attr_accessor :mode
101
+
102
+ # The confidence, from 0.0 to 1.0, of the reliability of the `mode`.
103
+ # @return [Float]
104
+ attr_accessor :mode_confidence
105
+
106
+ # An [Echo Nest Musical Fingerprint
107
+ # (ENMFP)](https://academiccommons.columbia.edu/doi/10.7916/D8Q248M4)
108
+ # codestring for this track.
109
+ # @return [String]
110
+ attr_accessor :codestring
111
+
112
+ # A version number for the Echo Nest Musical Fingerprint format used in the
113
+ # codestring field.
114
+ # @return [Float]
115
+ attr_accessor :code_version
116
+
117
+ # An [EchoPrint](https://github.com/spotify/echoprint-codegen) codestring
118
+ # for this track.
119
+ # @return [String]
120
+ attr_accessor :echoprintstring
121
+
122
+ # A version number for the EchoPrint format used in the echoprintstring
123
+ # field.
124
+ # @return [Float]
125
+ attr_accessor :echoprint_version
126
+
127
+ # A [Synchstring](https://github.com/echonest/synchdata) for this track.
128
+ # @return [String]
129
+ attr_accessor :synchstring
130
+
131
+ # A version number for the Synchstring used in the synchstring field.
132
+ # @return [Float]
133
+ attr_accessor :synch_version
134
+
135
+ # A Rhythmstring for this track. The format of this string is similar to the
136
+ # Synchstring.
137
+ # @return [String]
138
+ attr_accessor :rhythmstring
139
+
140
+ # A version number for the Rhythmstring used in the rhythmstring field.
141
+ # @return [Float]
142
+ attr_accessor :rhythm_version
143
+
144
+ # A mapping from model property names to API property names.
145
+ def self.names
146
+ @_hash = {} if @_hash.nil?
147
+ @_hash['num_samples'] = 'num_samples'
148
+ @_hash['duration'] = 'duration'
149
+ @_hash['sample_md5'] = 'sample_md5'
150
+ @_hash['offset_seconds'] = 'offset_seconds'
151
+ @_hash['window_seconds'] = 'window_seconds'
152
+ @_hash['analysis_sample_rate'] = 'analysis_sample_rate'
153
+ @_hash['analysis_channels'] = 'analysis_channels'
154
+ @_hash['end_of_fade_in'] = 'end_of_fade_in'
155
+ @_hash['start_of_fade_out'] = 'start_of_fade_out'
156
+ @_hash['loudness'] = 'loudness'
157
+ @_hash['tempo'] = 'tempo'
158
+ @_hash['tempo_confidence'] = 'tempo_confidence'
159
+ @_hash['time_signature'] = 'time_signature'
160
+ @_hash['time_signature_confidence'] = 'time_signature_confidence'
161
+ @_hash['key'] = 'key'
162
+ @_hash['key_confidence'] = 'key_confidence'
163
+ @_hash['mode'] = 'mode'
164
+ @_hash['mode_confidence'] = 'mode_confidence'
165
+ @_hash['codestring'] = 'codestring'
166
+ @_hash['code_version'] = 'code_version'
167
+ @_hash['echoprintstring'] = 'echoprintstring'
168
+ @_hash['echoprint_version'] = 'echoprint_version'
169
+ @_hash['synchstring'] = 'synchstring'
170
+ @_hash['synch_version'] = 'synch_version'
171
+ @_hash['rhythmstring'] = 'rhythmstring'
172
+ @_hash['rhythm_version'] = 'rhythm_version'
173
+ @_hash
174
+ end
175
+
176
+ # An array for optional fields
177
+ def self.optionals
178
+ %w[
179
+ num_samples
180
+ duration
181
+ sample_md5
182
+ offset_seconds
183
+ window_seconds
184
+ analysis_sample_rate
185
+ analysis_channels
186
+ end_of_fade_in
187
+ start_of_fade_out
188
+ loudness
189
+ tempo
190
+ tempo_confidence
191
+ time_signature
192
+ time_signature_confidence
193
+ key
194
+ key_confidence
195
+ mode
196
+ mode_confidence
197
+ codestring
198
+ code_version
199
+ echoprintstring
200
+ echoprint_version
201
+ synchstring
202
+ synch_version
203
+ rhythmstring
204
+ rhythm_version
205
+ ]
206
+ end
207
+
208
+ # An array for nullable fields
209
+ def self.nullables
210
+ []
211
+ end
212
+
213
+ def initialize(num_samples = SKIP, duration = SKIP, sample_md5 = SKIP,
214
+ offset_seconds = SKIP, window_seconds = SKIP,
215
+ analysis_sample_rate = SKIP, analysis_channels = SKIP,
216
+ end_of_fade_in = SKIP, start_of_fade_out = SKIP,
217
+ loudness = SKIP, tempo = SKIP, tempo_confidence = SKIP,
218
+ time_signature = SKIP, time_signature_confidence = SKIP,
219
+ key = SKIP, key_confidence = SKIP, mode = SKIP,
220
+ mode_confidence = SKIP, codestring = SKIP,
221
+ code_version = SKIP, echoprintstring = SKIP,
222
+ echoprint_version = SKIP, synchstring = SKIP,
223
+ synch_version = SKIP, rhythmstring = SKIP,
224
+ rhythm_version = SKIP)
225
+ @num_samples = num_samples unless num_samples == SKIP
226
+ @duration = duration unless duration == SKIP
227
+ @sample_md5 = sample_md5 unless sample_md5 == SKIP
228
+ @offset_seconds = offset_seconds unless offset_seconds == SKIP
229
+ @window_seconds = window_seconds unless window_seconds == SKIP
230
+ @analysis_sample_rate = analysis_sample_rate unless analysis_sample_rate == SKIP
231
+ @analysis_channels = analysis_channels unless analysis_channels == SKIP
232
+ @end_of_fade_in = end_of_fade_in unless end_of_fade_in == SKIP
233
+ @start_of_fade_out = start_of_fade_out unless start_of_fade_out == SKIP
234
+ @loudness = loudness unless loudness == SKIP
235
+ @tempo = tempo unless tempo == SKIP
236
+ @tempo_confidence = tempo_confidence unless tempo_confidence == SKIP
237
+ @time_signature = time_signature unless time_signature == SKIP
238
+ unless time_signature_confidence == SKIP
239
+ @time_signature_confidence =
240
+ time_signature_confidence
241
+ end
242
+ @key = key unless key == SKIP
243
+ @key_confidence = key_confidence unless key_confidence == SKIP
244
+ @mode = mode unless mode == SKIP
245
+ @mode_confidence = mode_confidence unless mode_confidence == SKIP
246
+ @codestring = codestring unless codestring == SKIP
247
+ @code_version = code_version unless code_version == SKIP
248
+ @echoprintstring = echoprintstring unless echoprintstring == SKIP
249
+ @echoprint_version = echoprint_version unless echoprint_version == SKIP
250
+ @synchstring = synchstring unless synchstring == SKIP
251
+ @synch_version = synch_version unless synch_version == SKIP
252
+ @rhythmstring = rhythmstring unless rhythmstring == SKIP
253
+ @rhythm_version = rhythm_version unless rhythm_version == SKIP
254
+ end
255
+
256
+ # Creates an instance of the object from a hash.
257
+ def self.from_hash(hash)
258
+ return nil unless hash
259
+
260
+ # Extract variables from the hash.
261
+ num_samples = hash.key?('num_samples') ? hash['num_samples'] : SKIP
262
+ duration = hash.key?('duration') ? hash['duration'] : SKIP
263
+ sample_md5 = hash.key?('sample_md5') ? hash['sample_md5'] : SKIP
264
+ offset_seconds =
265
+ hash.key?('offset_seconds') ? hash['offset_seconds'] : SKIP
266
+ window_seconds =
267
+ hash.key?('window_seconds') ? hash['window_seconds'] : SKIP
268
+ analysis_sample_rate =
269
+ hash.key?('analysis_sample_rate') ? hash['analysis_sample_rate'] : SKIP
270
+ analysis_channels =
271
+ hash.key?('analysis_channels') ? hash['analysis_channels'] : SKIP
272
+ end_of_fade_in =
273
+ hash.key?('end_of_fade_in') ? hash['end_of_fade_in'] : SKIP
274
+ start_of_fade_out =
275
+ hash.key?('start_of_fade_out') ? hash['start_of_fade_out'] : SKIP
276
+ loudness = hash.key?('loudness') ? hash['loudness'] : SKIP
277
+ tempo = hash.key?('tempo') ? hash['tempo'] : SKIP
278
+ tempo_confidence =
279
+ hash.key?('tempo_confidence') ? hash['tempo_confidence'] : SKIP
280
+ time_signature =
281
+ hash.key?('time_signature') ? hash['time_signature'] : SKIP
282
+ time_signature_confidence =
283
+ hash.key?('time_signature_confidence') ? hash['time_signature_confidence'] : SKIP
284
+ key = hash.key?('key') ? hash['key'] : SKIP
285
+ key_confidence =
286
+ hash.key?('key_confidence') ? hash['key_confidence'] : SKIP
287
+ mode = hash.key?('mode') ? hash['mode'] : SKIP
288
+ mode_confidence =
289
+ hash.key?('mode_confidence') ? hash['mode_confidence'] : SKIP
290
+ codestring = hash.key?('codestring') ? hash['codestring'] : SKIP
291
+ code_version = hash.key?('code_version') ? hash['code_version'] : SKIP
292
+ echoprintstring =
293
+ hash.key?('echoprintstring') ? hash['echoprintstring'] : SKIP
294
+ echoprint_version =
295
+ hash.key?('echoprint_version') ? hash['echoprint_version'] : SKIP
296
+ synchstring = hash.key?('synchstring') ? hash['synchstring'] : SKIP
297
+ synch_version = hash.key?('synch_version') ? hash['synch_version'] : SKIP
298
+ rhythmstring = hash.key?('rhythmstring') ? hash['rhythmstring'] : SKIP
299
+ rhythm_version =
300
+ hash.key?('rhythm_version') ? hash['rhythm_version'] : SKIP
301
+
302
+ # Create object from extracted values.
303
+ Track.new(num_samples,
304
+ duration,
305
+ sample_md5,
306
+ offset_seconds,
307
+ window_seconds,
308
+ analysis_sample_rate,
309
+ analysis_channels,
310
+ end_of_fade_in,
311
+ start_of_fade_out,
312
+ loudness,
313
+ tempo,
314
+ tempo_confidence,
315
+ time_signature,
316
+ time_signature_confidence,
317
+ key,
318
+ key_confidence,
319
+ mode,
320
+ mode_confidence,
321
+ codestring,
322
+ code_version,
323
+ echoprintstring,
324
+ echoprint_version,
325
+ synchstring,
326
+ synch_version,
327
+ rhythmstring,
328
+ rhythm_version)
329
+ end
330
+ end
331
+ end
@@ -0,0 +1,50 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # Track1 Model.
8
+ class Track1 < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Spotify URI
13
+ # @return [String]
14
+ attr_accessor :uri
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['uri'] = 'uri'
20
+ @_hash
21
+ end
22
+
23
+ # An array for optional fields
24
+ def self.optionals
25
+ %w[
26
+ uri
27
+ ]
28
+ end
29
+
30
+ # An array for nullable fields
31
+ def self.nullables
32
+ []
33
+ end
34
+
35
+ def initialize(uri = SKIP)
36
+ @uri = uri unless uri == SKIP
37
+ end
38
+
39
+ # Creates an instance of the object from a hash.
40
+ def self.from_hash(hash)
41
+ return nil unless hash
42
+
43
+ # Extract variables from the hash.
44
+ uri = hash.key?('uri') ? hash['uri'] : SKIP
45
+
46
+ # Create object from extracted values.
47
+ Track1.new(uri)
48
+ end
49
+ end
50
+ end