spotify-api-sdk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,491 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # TracksController
8
+ class TracksController < BaseController
9
+ # Get Spotify catalog information for a single track identified by its
10
+ # unique Spotify ID.
11
+ # @param [String] id Required parameter: Example:
12
+ # @param [String] market Optional parameter: Example:
13
+ # @return [TrackObject] response from the API call
14
+ def get_track(id,
15
+ market: nil)
16
+ new_api_call_builder
17
+ .request(new_request_builder(HttpMethodEnum::GET,
18
+ '/tracks/{id}',
19
+ Server::DEFAULT)
20
+ .template_param(new_parameter(id, key: 'id')
21
+ .should_encode(true))
22
+ .query_param(new_parameter(market, key: 'market'))
23
+ .header_param(new_parameter('application/json', key: 'accept'))
24
+ .auth(Single.new('oauth_2_0')))
25
+ .response(new_response_handler
26
+ .deserializer(APIHelper.method(:custom_type_deserializer))
27
+ .deserialize_into(TrackObject.method(:from_hash))
28
+ .is_api_response(true)
29
+ .local_error('401',
30
+ "Bad or expired token. This can happen if the user revoked a'\
31
+ ' token or\nthe access token has expired. You should'\
32
+ ' re-authenticate the user.\n",
33
+ UnauthorizedException)
34
+ .local_error('403',
35
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
36
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
37
+ ' won't help here.\n",
38
+ ForbiddenException)
39
+ .local_error('429',
40
+ "The app has exceeded its rate limits.\n",
41
+ TooManyRequestsException))
42
+ .execute
43
+ end
44
+
45
+ # Get Spotify catalog information for multiple tracks based on their Spotify
46
+ # IDs.
47
+ # @param [String] ids Required parameter: Example:
48
+ # @param [String] market Optional parameter: Example:
49
+ # @return [ManyTracks] response from the API call
50
+ def get_several_tracks(ids,
51
+ market: nil)
52
+ new_api_call_builder
53
+ .request(new_request_builder(HttpMethodEnum::GET,
54
+ '/tracks',
55
+ Server::DEFAULT)
56
+ .query_param(new_parameter(ids, key: 'ids'))
57
+ .query_param(new_parameter(market, key: 'market'))
58
+ .header_param(new_parameter('application/json', key: 'accept'))
59
+ .auth(Single.new('oauth_2_0')))
60
+ .response(new_response_handler
61
+ .deserializer(APIHelper.method(:custom_type_deserializer))
62
+ .deserialize_into(ManyTracks.method(:from_hash))
63
+ .is_api_response(true)
64
+ .local_error('401',
65
+ "Bad or expired token. This can happen if the user revoked a'\
66
+ ' token or\nthe access token has expired. You should'\
67
+ ' re-authenticate the user.\n",
68
+ UnauthorizedException)
69
+ .local_error('403',
70
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
71
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
72
+ ' won't help here.\n",
73
+ ForbiddenException)
74
+ .local_error('429',
75
+ "The app has exceeded its rate limits.\n",
76
+ TooManyRequestsException))
77
+ .execute
78
+ end
79
+
80
+ # Get a list of the songs saved in the current Spotify user's 'Your Music'
81
+ # library.
82
+ # @param [String] market Optional parameter: Example:
83
+ # @param [Integer] limit Optional parameter: Example:20
84
+ # @param [Integer] offset Optional parameter: Example:0
85
+ # @return [PagingSavedTrackObject] response from the API call
86
+ def get_users_saved_tracks(market: nil,
87
+ limit: 20,
88
+ offset: 0)
89
+ new_api_call_builder
90
+ .request(new_request_builder(HttpMethodEnum::GET,
91
+ '/me/tracks',
92
+ Server::DEFAULT)
93
+ .query_param(new_parameter(market, key: 'market'))
94
+ .query_param(new_parameter(limit, key: 'limit'))
95
+ .query_param(new_parameter(offset, key: 'offset'))
96
+ .header_param(new_parameter('application/json', key: 'accept'))
97
+ .auth(Single.new('oauth_2_0')))
98
+ .response(new_response_handler
99
+ .deserializer(APIHelper.method(:custom_type_deserializer))
100
+ .deserialize_into(PagingSavedTrackObject.method(:from_hash))
101
+ .is_api_response(true)
102
+ .local_error('401',
103
+ "Bad or expired token. This can happen if the user revoked a'\
104
+ ' token or\nthe access token has expired. You should'\
105
+ ' re-authenticate the user.\n",
106
+ UnauthorizedException)
107
+ .local_error('403',
108
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
109
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
110
+ ' won't help here.\n",
111
+ ForbiddenException)
112
+ .local_error('429',
113
+ "The app has exceeded its rate limits.\n",
114
+ TooManyRequestsException))
115
+ .execute
116
+ end
117
+
118
+ # Save one or more tracks to the current user's 'Your Music' library.
119
+ # @param [String] ids Required parameter: Example:
120
+ # @param [MeTracksRequest] body Optional parameter: Example:
121
+ # @return [void] response from the API call
122
+ def save_tracks_user(ids,
123
+ body: nil)
124
+ new_api_call_builder
125
+ .request(new_request_builder(HttpMethodEnum::PUT,
126
+ '/me/tracks',
127
+ Server::DEFAULT)
128
+ .query_param(new_parameter(ids, key: 'ids'))
129
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
130
+ .body_param(new_parameter(body))
131
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
132
+ .auth(Single.new('oauth_2_0')))
133
+ .response(new_response_handler
134
+ .is_response_void(true)
135
+ .is_api_response(true)
136
+ .local_error('401',
137
+ "Bad or expired token. This can happen if the user revoked a'\
138
+ ' token or\nthe access token has expired. You should'\
139
+ ' re-authenticate the user.\n",
140
+ UnauthorizedException)
141
+ .local_error('403',
142
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
143
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
144
+ ' won't help here.\n",
145
+ ForbiddenException)
146
+ .local_error('429',
147
+ "The app has exceeded its rate limits.\n",
148
+ TooManyRequestsException))
149
+ .execute
150
+ end
151
+
152
+ # Remove one or more tracks from the current user's 'Your Music' library.
153
+ # @param [String] ids Required parameter: Example:
154
+ # @param [MeTracksRequest1] body Optional parameter: Example:
155
+ # @return [void] response from the API call
156
+ def remove_tracks_user(ids,
157
+ body: nil)
158
+ new_api_call_builder
159
+ .request(new_request_builder(HttpMethodEnum::DELETE,
160
+ '/me/tracks',
161
+ Server::DEFAULT)
162
+ .query_param(new_parameter(ids, key: 'ids'))
163
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
164
+ .body_param(new_parameter(body))
165
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
166
+ .auth(Single.new('oauth_2_0')))
167
+ .response(new_response_handler
168
+ .is_response_void(true)
169
+ .is_api_response(true)
170
+ .local_error('401',
171
+ "Bad or expired token. This can happen if the user revoked a'\
172
+ ' token or\nthe access token has expired. You should'\
173
+ ' re-authenticate the user.\n",
174
+ UnauthorizedException)
175
+ .local_error('403',
176
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
177
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
178
+ ' won't help here.\n",
179
+ ForbiddenException)
180
+ .local_error('429',
181
+ "The app has exceeded its rate limits.\n",
182
+ TooManyRequestsException))
183
+ .execute
184
+ end
185
+
186
+ # Check if one or more tracks is already saved in the current Spotify user's
187
+ # 'Your Music' library.
188
+ # @param [String] ids Required parameter: Example:
189
+ # @return [Array[TrueClass | FalseClass]] response from the API call
190
+ def check_users_saved_tracks(ids)
191
+ new_api_call_builder
192
+ .request(new_request_builder(HttpMethodEnum::GET,
193
+ '/me/tracks/contains',
194
+ Server::DEFAULT)
195
+ .query_param(new_parameter(ids, key: 'ids'))
196
+ .header_param(new_parameter('application/json', key: 'accept'))
197
+ .auth(Single.new('oauth_2_0')))
198
+ .response(new_response_handler
199
+ .deserializer(APIHelper.method(:deserialize_primitive_types))
200
+ .is_api_response(true)
201
+ .is_response_array(true)
202
+ .is_primitive_response(true)
203
+ .local_error('401',
204
+ "Bad or expired token. This can happen if the user revoked a'\
205
+ ' token or\nthe access token has expired. You should'\
206
+ ' re-authenticate the user.\n",
207
+ UnauthorizedException)
208
+ .local_error('403',
209
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
210
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
211
+ ' won't help here.\n",
212
+ ForbiddenException)
213
+ .local_error('429',
214
+ "The app has exceeded its rate limits.\n",
215
+ TooManyRequestsException))
216
+ .execute
217
+ end
218
+
219
+ # Get audio features for multiple tracks based on their Spotify IDs.
220
+ # @param [String] ids Required parameter: Example:
221
+ # @return [ManyAudioFeatures] response from the API call
222
+ def get_several_audio_features(ids)
223
+ new_api_call_builder
224
+ .request(new_request_builder(HttpMethodEnum::GET,
225
+ '/audio-features',
226
+ Server::DEFAULT)
227
+ .query_param(new_parameter(ids, key: 'ids'))
228
+ .header_param(new_parameter('application/json', key: 'accept'))
229
+ .auth(Single.new('oauth_2_0')))
230
+ .response(new_response_handler
231
+ .deserializer(APIHelper.method(:custom_type_deserializer))
232
+ .deserialize_into(ManyAudioFeatures.method(:from_hash))
233
+ .is_api_response(true)
234
+ .local_error('401',
235
+ "Bad or expired token. This can happen if the user revoked a'\
236
+ ' token or\nthe access token has expired. You should'\
237
+ ' re-authenticate the user.\n",
238
+ UnauthorizedException)
239
+ .local_error('403',
240
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
241
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
242
+ ' won't help here.\n",
243
+ ForbiddenException)
244
+ .local_error('429',
245
+ "The app has exceeded its rate limits.\n",
246
+ TooManyRequestsException))
247
+ .execute
248
+ end
249
+
250
+ # Get audio feature information for a single track identified by its unique
251
+ # Spotify ID.
252
+ # @param [String] id Required parameter: Example:
253
+ # @return [AudioFeaturesObject] response from the API call
254
+ def get_audio_features(id)
255
+ new_api_call_builder
256
+ .request(new_request_builder(HttpMethodEnum::GET,
257
+ '/audio-features/{id}',
258
+ Server::DEFAULT)
259
+ .template_param(new_parameter(id, key: 'id')
260
+ .should_encode(true))
261
+ .header_param(new_parameter('application/json', key: 'accept'))
262
+ .auth(Single.new('oauth_2_0')))
263
+ .response(new_response_handler
264
+ .deserializer(APIHelper.method(:custom_type_deserializer))
265
+ .deserialize_into(AudioFeaturesObject.method(:from_hash))
266
+ .is_api_response(true)
267
+ .local_error('401',
268
+ "Bad or expired token. This can happen if the user revoked a'\
269
+ ' token or\nthe access token has expired. You should'\
270
+ ' re-authenticate the user.\n",
271
+ UnauthorizedException)
272
+ .local_error('403',
273
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
274
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
275
+ ' won't help here.\n",
276
+ ForbiddenException)
277
+ .local_error('429',
278
+ "The app has exceeded its rate limits.\n",
279
+ TooManyRequestsException))
280
+ .execute
281
+ end
282
+
283
+ # Get a low-level audio analysis for a track in the Spotify catalog. The
284
+ # audio analysis describes the track’s structure and musical content,
285
+ # including rhythm, pitch, and timbre.
286
+ # @param [String] id Required parameter: Example:
287
+ # @return [AudioAnalysisObject] response from the API call
288
+ def get_audio_analysis(id)
289
+ new_api_call_builder
290
+ .request(new_request_builder(HttpMethodEnum::GET,
291
+ '/audio-analysis/{id}',
292
+ Server::DEFAULT)
293
+ .template_param(new_parameter(id, key: 'id')
294
+ .should_encode(true))
295
+ .header_param(new_parameter('application/json', key: 'accept'))
296
+ .auth(Single.new('oauth_2_0')))
297
+ .response(new_response_handler
298
+ .deserializer(APIHelper.method(:custom_type_deserializer))
299
+ .deserialize_into(AudioAnalysisObject.method(:from_hash))
300
+ .is_api_response(true)
301
+ .local_error('401',
302
+ "Bad or expired token. This can happen if the user revoked a'\
303
+ ' token or\nthe access token has expired. You should'\
304
+ ' re-authenticate the user.\n",
305
+ UnauthorizedException)
306
+ .local_error('403',
307
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
308
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
309
+ ' won't help here.\n",
310
+ ForbiddenException)
311
+ .local_error('429',
312
+ "The app has exceeded its rate limits.\n",
313
+ TooManyRequestsException))
314
+ .execute
315
+ end
316
+
317
+ # Recommendations are generated based on the available information for a
318
+ # given seed entity and matched against similar artists and tracks. If there
319
+ # is sufficient information about the provided seeds, a list of tracks will
320
+ # be returned together with pool size details.
321
+ # For artists and tracks that are very new or obscure there might not be
322
+ # enough data to generate a list of tracks.
323
+ # @param [Integer] limit Optional parameter: Example:20
324
+ # @param [String] market Optional parameter: Example:
325
+ # @param [String] seed_artists Optional parameter: Example:
326
+ # @param [String] seed_genres Optional parameter: Example:
327
+ # @param [String] seed_tracks Optional parameter: Example:
328
+ # @param [Float] min_acousticness Optional parameter: Example:
329
+ # @param [Float] max_acousticness Optional parameter: Example:
330
+ # @param [Float] target_acousticness Optional parameter: Example:
331
+ # @param [Float] min_danceability Optional parameter: Example:
332
+ # @param [Float] max_danceability Optional parameter: Example:
333
+ # @param [Float] target_danceability Optional parameter: Example:
334
+ # @param [Integer] min_duration_ms Optional parameter: Example:
335
+ # @param [Integer] max_duration_ms Optional parameter: Example:
336
+ # @param [Integer] target_duration_ms Optional parameter: Example:
337
+ # @param [Float] min_energy Optional parameter: Example:
338
+ # @param [Float] max_energy Optional parameter: Example:
339
+ # @param [Float] target_energy Optional parameter: Example:
340
+ # @param [Float] min_instrumentalness Optional parameter: Example:
341
+ # @param [Float] max_instrumentalness Optional parameter: Example:
342
+ # @param [Float] target_instrumentalness Optional parameter: Example:
343
+ # @param [Integer] min_key Optional parameter: Example:
344
+ # @param [Integer] max_key Optional parameter: Example:
345
+ # @param [Integer] target_key Optional parameter: Example:
346
+ # @param [Float] min_liveness Optional parameter: Example:
347
+ # @param [Float] max_liveness Optional parameter: Example:
348
+ # @param [Float] target_liveness Optional parameter: Example:
349
+ # @param [Float] min_loudness Optional parameter: Example:
350
+ # @param [Float] max_loudness Optional parameter: Example:
351
+ # @param [Float] target_loudness Optional parameter: Example:
352
+ # @param [Integer] min_mode Optional parameter: Example:
353
+ # @param [Integer] max_mode Optional parameter: Example:
354
+ # @param [Integer] target_mode Optional parameter: Example:
355
+ # @param [Integer] min_popularity Optional parameter: Example:
356
+ # @param [Integer] max_popularity Optional parameter: Example:
357
+ # @param [Integer] target_popularity Optional parameter: Example:
358
+ # @param [Float] min_speechiness Optional parameter: Example:
359
+ # @param [Float] max_speechiness Optional parameter: Example:
360
+ # @param [Float] target_speechiness Optional parameter: Example:
361
+ # @param [Float] min_tempo Optional parameter: Example:
362
+ # @param [Float] max_tempo Optional parameter: Example:
363
+ # @param [Float] target_tempo Optional parameter: Example:
364
+ # @param [Integer] min_time_signature Optional parameter: Example:
365
+ # @param [Integer] max_time_signature Optional parameter: Example:
366
+ # @param [Integer] target_time_signature Optional parameter: Example:
367
+ # @param [Float] min_valence Optional parameter: Example:
368
+ # @param [Float] max_valence Optional parameter: Example:
369
+ # @param [Float] target_valence Optional parameter: Example:
370
+ # @return [RecommendationsObject] response from the API call
371
+ def get_recommendations(limit: 20,
372
+ market: nil,
373
+ seed_artists: nil,
374
+ seed_genres: nil,
375
+ seed_tracks: nil,
376
+ min_acousticness: nil,
377
+ max_acousticness: nil,
378
+ target_acousticness: nil,
379
+ min_danceability: nil,
380
+ max_danceability: nil,
381
+ target_danceability: nil,
382
+ min_duration_ms: nil,
383
+ max_duration_ms: nil,
384
+ target_duration_ms: nil,
385
+ min_energy: nil,
386
+ max_energy: nil,
387
+ target_energy: nil,
388
+ min_instrumentalness: nil,
389
+ max_instrumentalness: nil,
390
+ target_instrumentalness: nil,
391
+ min_key: nil,
392
+ max_key: nil,
393
+ target_key: nil,
394
+ min_liveness: nil,
395
+ max_liveness: nil,
396
+ target_liveness: nil,
397
+ min_loudness: nil,
398
+ max_loudness: nil,
399
+ target_loudness: nil,
400
+ min_mode: nil,
401
+ max_mode: nil,
402
+ target_mode: nil,
403
+ min_popularity: nil,
404
+ max_popularity: nil,
405
+ target_popularity: nil,
406
+ min_speechiness: nil,
407
+ max_speechiness: nil,
408
+ target_speechiness: nil,
409
+ min_tempo: nil,
410
+ max_tempo: nil,
411
+ target_tempo: nil,
412
+ min_time_signature: nil,
413
+ max_time_signature: nil,
414
+ target_time_signature: nil,
415
+ min_valence: nil,
416
+ max_valence: nil,
417
+ target_valence: nil)
418
+ new_api_call_builder
419
+ .request(new_request_builder(HttpMethodEnum::GET,
420
+ '/recommendations',
421
+ Server::DEFAULT)
422
+ .query_param(new_parameter(limit, key: 'limit'))
423
+ .query_param(new_parameter(market, key: 'market'))
424
+ .query_param(new_parameter(seed_artists, key: 'seed_artists'))
425
+ .query_param(new_parameter(seed_genres, key: 'seed_genres'))
426
+ .query_param(new_parameter(seed_tracks, key: 'seed_tracks'))
427
+ .query_param(new_parameter(min_acousticness, key: 'min_acousticness'))
428
+ .query_param(new_parameter(max_acousticness, key: 'max_acousticness'))
429
+ .query_param(new_parameter(target_acousticness, key: 'target_acousticness'))
430
+ .query_param(new_parameter(min_danceability, key: 'min_danceability'))
431
+ .query_param(new_parameter(max_danceability, key: 'max_danceability'))
432
+ .query_param(new_parameter(target_danceability, key: 'target_danceability'))
433
+ .query_param(new_parameter(min_duration_ms, key: 'min_duration_ms'))
434
+ .query_param(new_parameter(max_duration_ms, key: 'max_duration_ms'))
435
+ .query_param(new_parameter(target_duration_ms, key: 'target_duration_ms'))
436
+ .query_param(new_parameter(min_energy, key: 'min_energy'))
437
+ .query_param(new_parameter(max_energy, key: 'max_energy'))
438
+ .query_param(new_parameter(target_energy, key: 'target_energy'))
439
+ .query_param(new_parameter(min_instrumentalness, key: 'min_instrumentalness'))
440
+ .query_param(new_parameter(max_instrumentalness, key: 'max_instrumentalness'))
441
+ .query_param(new_parameter(target_instrumentalness, key: 'target_instrumentalness'))
442
+ .query_param(new_parameter(min_key, key: 'min_key'))
443
+ .query_param(new_parameter(max_key, key: 'max_key'))
444
+ .query_param(new_parameter(target_key, key: 'target_key'))
445
+ .query_param(new_parameter(min_liveness, key: 'min_liveness'))
446
+ .query_param(new_parameter(max_liveness, key: 'max_liveness'))
447
+ .query_param(new_parameter(target_liveness, key: 'target_liveness'))
448
+ .query_param(new_parameter(min_loudness, key: 'min_loudness'))
449
+ .query_param(new_parameter(max_loudness, key: 'max_loudness'))
450
+ .query_param(new_parameter(target_loudness, key: 'target_loudness'))
451
+ .query_param(new_parameter(min_mode, key: 'min_mode'))
452
+ .query_param(new_parameter(max_mode, key: 'max_mode'))
453
+ .query_param(new_parameter(target_mode, key: 'target_mode'))
454
+ .query_param(new_parameter(min_popularity, key: 'min_popularity'))
455
+ .query_param(new_parameter(max_popularity, key: 'max_popularity'))
456
+ .query_param(new_parameter(target_popularity, key: 'target_popularity'))
457
+ .query_param(new_parameter(min_speechiness, key: 'min_speechiness'))
458
+ .query_param(new_parameter(max_speechiness, key: 'max_speechiness'))
459
+ .query_param(new_parameter(target_speechiness, key: 'target_speechiness'))
460
+ .query_param(new_parameter(min_tempo, key: 'min_tempo'))
461
+ .query_param(new_parameter(max_tempo, key: 'max_tempo'))
462
+ .query_param(new_parameter(target_tempo, key: 'target_tempo'))
463
+ .query_param(new_parameter(min_time_signature, key: 'min_time_signature'))
464
+ .query_param(new_parameter(max_time_signature, key: 'max_time_signature'))
465
+ .query_param(new_parameter(target_time_signature, key: 'target_time_signature'))
466
+ .query_param(new_parameter(min_valence, key: 'min_valence'))
467
+ .query_param(new_parameter(max_valence, key: 'max_valence'))
468
+ .query_param(new_parameter(target_valence, key: 'target_valence'))
469
+ .header_param(new_parameter('application/json', key: 'accept'))
470
+ .auth(Single.new('oauth_2_0')))
471
+ .response(new_response_handler
472
+ .deserializer(APIHelper.method(:custom_type_deserializer))
473
+ .deserialize_into(RecommendationsObject.method(:from_hash))
474
+ .is_api_response(true)
475
+ .local_error('401',
476
+ "Bad or expired token. This can happen if the user revoked a'\
477
+ ' token or\nthe access token has expired. You should'\
478
+ ' re-authenticate the user.\n",
479
+ UnauthorizedException)
480
+ .local_error('403',
481
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
482
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
483
+ ' won't help here.\n",
484
+ ForbiddenException)
485
+ .local_error('429',
486
+ "The app has exceeded its rate limits.\n",
487
+ TooManyRequestsException))
488
+ .execute
489
+ end
490
+ end
491
+ end