spotify-apimatic-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 (181) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +30 -0
  3. data/README.md +170 -0
  4. data/bin/console +15 -0
  5. data/lib/spotify_web_api/api_helper.rb +10 -0
  6. data/lib/spotify_web_api/client.rb +165 -0
  7. data/lib/spotify_web_api/configuration.rb +244 -0
  8. data/lib/spotify_web_api/controllers/albums_controller.rb +297 -0
  9. data/lib/spotify_web_api/controllers/artists_controller.rb +188 -0
  10. data/lib/spotify_web_api/controllers/audiobooks_controller.rb +258 -0
  11. data/lib/spotify_web_api/controllers/base_controller.rb +60 -0
  12. data/lib/spotify_web_api/controllers/categories_controller.rb +84 -0
  13. data/lib/spotify_web_api/controllers/chapters_controller.rb +82 -0
  14. data/lib/spotify_web_api/controllers/episodes_controller.rb +241 -0
  15. data/lib/spotify_web_api/controllers/genres_controller.rb +39 -0
  16. data/lib/spotify_web_api/controllers/markets_controller.rb +38 -0
  17. data/lib/spotify_web_api/controllers/o_auth_authorization_controller.rb +82 -0
  18. data/lib/spotify_web_api/controllers/player_controller.rb +525 -0
  19. data/lib/spotify_web_api/controllers/playlists_controller.rb +538 -0
  20. data/lib/spotify_web_api/controllers/search_controller.rb +61 -0
  21. data/lib/spotify_web_api/controllers/shows_controller.rb +263 -0
  22. data/lib/spotify_web_api/controllers/tracks_controller.rb +534 -0
  23. data/lib/spotify_web_api/controllers/users_controller.rb +402 -0
  24. data/lib/spotify_web_api/exceptions/api_exception.rb +21 -0
  25. data/lib/spotify_web_api/exceptions/bad_request_exception.rb +46 -0
  26. data/lib/spotify_web_api/exceptions/forbidden_exception.rb +46 -0
  27. data/lib/spotify_web_api/exceptions/not_found_exception.rb +46 -0
  28. data/lib/spotify_web_api/exceptions/o_auth_provider_exception.rb +64 -0
  29. data/lib/spotify_web_api/exceptions/too_many_requests_exception.rb +46 -0
  30. data/lib/spotify_web_api/exceptions/unauthorized_exception.rb +46 -0
  31. data/lib/spotify_web_api/http/api_response.rb +19 -0
  32. data/lib/spotify_web_api/http/auth/o_auth2.rb +164 -0
  33. data/lib/spotify_web_api/http/http_call_back.rb +10 -0
  34. data/lib/spotify_web_api/http/http_method_enum.rb +10 -0
  35. data/lib/spotify_web_api/http/http_request.rb +10 -0
  36. data/lib/spotify_web_api/http/http_response.rb +10 -0
  37. data/lib/spotify_web_api/http/proxy_settings.rb +22 -0
  38. data/lib/spotify_web_api/models/album_base.rb +189 -0
  39. data/lib/spotify_web_api/models/album_group_enum.rb +44 -0
  40. data/lib/spotify_web_api/models/album_object.rb +273 -0
  41. data/lib/spotify_web_api/models/album_restriction_object.rb +75 -0
  42. data/lib/spotify_web_api/models/album_type_enum.rb +40 -0
  43. data/lib/spotify_web_api/models/artist_discography_album_object.rb +216 -0
  44. data/lib/spotify_web_api/models/artist_object.rb +174 -0
  45. data/lib/spotify_web_api/models/audio_analysis_object.rb +171 -0
  46. data/lib/spotify_web_api/models/audio_features_object.rb +273 -0
  47. data/lib/spotify_web_api/models/audiobook_base.rb +270 -0
  48. data/lib/spotify_web_api/models/audiobook_object.rb +278 -0
  49. data/lib/spotify_web_api/models/author_object.rb +62 -0
  50. data/lib/spotify_web_api/models/base_model.rb +110 -0
  51. data/lib/spotify_web_api/models/categories.rb +125 -0
  52. data/lib/spotify_web_api/models/category_object.rb +95 -0
  53. data/lib/spotify_web_api/models/chapter_base.rb +265 -0
  54. data/lib/spotify_web_api/models/chapter_object.rb +273 -0
  55. data/lib/spotify_web_api/models/chapter_restriction_object.rb +71 -0
  56. data/lib/spotify_web_api/models/context_object.rb +102 -0
  57. data/lib/spotify_web_api/models/copyright_object.rb +82 -0
  58. data/lib/spotify_web_api/models/currently_playing_context_object.rb +168 -0
  59. data/lib/spotify_web_api/models/currently_playing_object.rb +138 -0
  60. data/lib/spotify_web_api/models/cursor_object.rb +71 -0
  61. data/lib/spotify_web_api/models/cursor_paged_artists.rb +60 -0
  62. data/lib/spotify_web_api/models/cursor_paging_object.rb +102 -0
  63. data/lib/spotify_web_api/models/cursor_paging_play_history_object.rb +120 -0
  64. data/lib/spotify_web_api/models/cursor_paging_simplified_artist_object.rb +120 -0
  65. data/lib/spotify_web_api/models/device_object.rb +153 -0
  66. data/lib/spotify_web_api/models/disallows_object.rb +171 -0
  67. data/lib/spotify_web_api/models/episode_base.rb +263 -0
  68. data/lib/spotify_web_api/models/episode_object.rb +368 -0
  69. data/lib/spotify_web_api/models/episode_restriction_object.rb +80 -0
  70. data/lib/spotify_web_api/models/error_object.rb +71 -0
  71. data/lib/spotify_web_api/models/explicit_content_settings_object.rb +74 -0
  72. data/lib/spotify_web_api/models/external_id_object.rb +94 -0
  73. data/lib/spotify_web_api/models/external_url_object.rb +73 -0
  74. data/lib/spotify_web_api/models/followers_object.rb +84 -0
  75. data/lib/spotify_web_api/models/image_object.rb +106 -0
  76. data/lib/spotify_web_api/models/include_external_enum.rb +29 -0
  77. data/lib/spotify_web_api/models/item_type1_enum.rb +26 -0
  78. data/lib/spotify_web_api/models/item_type2_enum.rb +36 -0
  79. data/lib/spotify_web_api/models/item_type3_enum.rb +36 -0
  80. data/lib/spotify_web_api/models/item_type_enum.rb +56 -0
  81. data/lib/spotify_web_api/models/linked_track_object.rb +113 -0
  82. data/lib/spotify_web_api/models/many_albums.rb +69 -0
  83. data/lib/spotify_web_api/models/many_artists.rb +69 -0
  84. data/lib/spotify_web_api/models/many_audio_features.rb +69 -0
  85. data/lib/spotify_web_api/models/many_audiobooks.rb +69 -0
  86. data/lib/spotify_web_api/models/many_chapters.rb +69 -0
  87. data/lib/spotify_web_api/models/many_devices.rb +69 -0
  88. data/lib/spotify_web_api/models/many_episodes.rb +69 -0
  89. data/lib/spotify_web_api/models/many_genres.rb +60 -0
  90. data/lib/spotify_web_api/models/many_simplified_shows.rb +69 -0
  91. data/lib/spotify_web_api/models/many_tracks.rb +69 -0
  92. data/lib/spotify_web_api/models/markets.rb +62 -0
  93. data/lib/spotify_web_api/models/me_albums_request.rb +67 -0
  94. data/lib/spotify_web_api/models/me_episodes_request.rb +64 -0
  95. data/lib/spotify_web_api/models/me_episodes_request1.rb +66 -0
  96. data/lib/spotify_web_api/models/me_following_request.rb +65 -0
  97. data/lib/spotify_web_api/models/me_following_request1.rb +67 -0
  98. data/lib/spotify_web_api/models/me_player_play_request.rb +103 -0
  99. data/lib/spotify_web_api/models/me_player_request.rb +75 -0
  100. data/lib/spotify_web_api/models/me_shows_request.rb +67 -0
  101. data/lib/spotify_web_api/models/me_tracks_request.rb +65 -0
  102. data/lib/spotify_web_api/models/me_tracks_request1.rb +67 -0
  103. data/lib/spotify_web_api/models/meta.rb +127 -0
  104. data/lib/spotify_web_api/models/mode_enum.rb +50 -0
  105. data/lib/spotify_web_api/models/narrator_object.rb +62 -0
  106. data/lib/spotify_web_api/models/o_auth_provider_error_enum.rb +62 -0
  107. data/lib/spotify_web_api/models/o_auth_scope_enum.rb +124 -0
  108. data/lib/spotify_web_api/models/o_auth_token.rb +96 -0
  109. data/lib/spotify_web_api/models/paged_albums.rb +60 -0
  110. data/lib/spotify_web_api/models/paged_categories.rb +60 -0
  111. data/lib/spotify_web_api/models/paging_artist_discography_album_object.rb +125 -0
  112. data/lib/spotify_web_api/models/paging_artist_object.rb +125 -0
  113. data/lib/spotify_web_api/models/paging_featured_playlist_object.rb +71 -0
  114. data/lib/spotify_web_api/models/paging_object.rb +107 -0
  115. data/lib/spotify_web_api/models/paging_playlist_object.rb +125 -0
  116. data/lib/spotify_web_api/models/paging_playlist_track_object.rb +125 -0
  117. data/lib/spotify_web_api/models/paging_saved_album_object.rb +125 -0
  118. data/lib/spotify_web_api/models/paging_saved_audiobook_object.rb +125 -0
  119. data/lib/spotify_web_api/models/paging_saved_episode_object.rb +125 -0
  120. data/lib/spotify_web_api/models/paging_saved_show_object.rb +125 -0
  121. data/lib/spotify_web_api/models/paging_saved_track_object.rb +125 -0
  122. data/lib/spotify_web_api/models/paging_simplified_album_object.rb +125 -0
  123. data/lib/spotify_web_api/models/paging_simplified_audiobook_object.rb +125 -0
  124. data/lib/spotify_web_api/models/paging_simplified_chapter_object.rb +125 -0
  125. data/lib/spotify_web_api/models/paging_simplified_episode_object.rb +125 -0
  126. data/lib/spotify_web_api/models/paging_simplified_show_object.rb +125 -0
  127. data/lib/spotify_web_api/models/paging_simplified_track_object.rb +125 -0
  128. data/lib/spotify_web_api/models/paging_track_object.rb +125 -0
  129. data/lib/spotify_web_api/models/play_history_object.rb +90 -0
  130. data/lib/spotify_web_api/models/playlist_object.rb +213 -0
  131. data/lib/spotify_web_api/models/playlist_owner_object.rb +124 -0
  132. data/lib/spotify_web_api/models/playlist_snapshot_id.rb +62 -0
  133. data/lib/spotify_web_api/models/playlist_track_object.rb +116 -0
  134. data/lib/spotify_web_api/models/playlist_tracks_ref_object.rb +72 -0
  135. data/lib/spotify_web_api/models/playlist_user_object.rb +122 -0
  136. data/lib/spotify_web_api/models/playlists_followers_request.rb +63 -0
  137. data/lib/spotify_web_api/models/playlists_request.rb +96 -0
  138. data/lib/spotify_web_api/models/playlists_tracks_request.rb +84 -0
  139. data/lib/spotify_web_api/models/playlists_tracks_request1.rb +112 -0
  140. data/lib/spotify_web_api/models/playlists_tracks_request2.rb +87 -0
  141. data/lib/spotify_web_api/models/private_user_object.rb +200 -0
  142. data/lib/spotify_web_api/models/public_user_object.rb +144 -0
  143. data/lib/spotify_web_api/models/queue_object.rb +86 -0
  144. data/lib/spotify_web_api/models/reason_enum.rb +43 -0
  145. data/lib/spotify_web_api/models/recommendation_seed_object.rb +120 -0
  146. data/lib/spotify_web_api/models/recommendations_object.rb +86 -0
  147. data/lib/spotify_web_api/models/release_date_precision_enum.rb +40 -0
  148. data/lib/spotify_web_api/models/resume_point_object.rb +84 -0
  149. data/lib/spotify_web_api/models/saved_album_object.rb +85 -0
  150. data/lib/spotify_web_api/models/saved_audiobook_object.rb +85 -0
  151. data/lib/spotify_web_api/models/saved_episode_object.rb +82 -0
  152. data/lib/spotify_web_api/models/saved_show_object.rb +85 -0
  153. data/lib/spotify_web_api/models/saved_track_object.rb +85 -0
  154. data/lib/spotify_web_api/models/search_items.rb +122 -0
  155. data/lib/spotify_web_api/models/section_object.rb +201 -0
  156. data/lib/spotify_web_api/models/segment_object.rb +184 -0
  157. data/lib/spotify_web_api/models/show_base.rb +327 -0
  158. data/lib/spotify_web_api/models/show_object.rb +243 -0
  159. data/lib/spotify_web_api/models/simplified_album_object.rb +284 -0
  160. data/lib/spotify_web_api/models/simplified_artist_object.rb +122 -0
  161. data/lib/spotify_web_api/models/simplified_playlist_object.rb +203 -0
  162. data/lib/spotify_web_api/models/simplified_track_object.rb +251 -0
  163. data/lib/spotify_web_api/models/time_interval_object.rb +81 -0
  164. data/lib/spotify_web_api/models/track.rb +367 -0
  165. data/lib/spotify_web_api/models/track1.rb +62 -0
  166. data/lib/spotify_web_api/models/track_object.rb +301 -0
  167. data/lib/spotify_web_api/models/track_restriction_object.rb +80 -0
  168. data/lib/spotify_web_api/models/type2_enum.rb +26 -0
  169. data/lib/spotify_web_api/models/type3_enum.rb +26 -0
  170. data/lib/spotify_web_api/models/type4_enum.rb +26 -0
  171. data/lib/spotify_web_api/models/type5_enum.rb +26 -0
  172. data/lib/spotify_web_api/models/type6_enum.rb +26 -0
  173. data/lib/spotify_web_api/models/type8_enum.rb +26 -0
  174. data/lib/spotify_web_api/models/type9_enum.rb +26 -0
  175. data/lib/spotify_web_api/models/type_enum.rb +26 -0
  176. data/lib/spotify_web_api/models/users_playlists_request.rb +101 -0
  177. data/lib/spotify_web_api/utilities/date_time_helper.rb +11 -0
  178. data/lib/spotify_web_api/utilities/file_wrapper.rb +28 -0
  179. data/lib/spotify_web_api/utilities/union_type_lookup.rb +73 -0
  180. data/lib/spotify_web_api.rb +200 -0
  181. metadata +264 -0
@@ -0,0 +1,534 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.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: TODO: type description here
12
+ # @param [String] market Optional parameter: TODO: type description here
13
+ # @return [ApiResponse] Complete http response with raw body and status code.
14
+ def get_track(id,
15
+ market: nil)
16
+ @api_call
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: TODO: type description here
48
+ # @param [String] market Optional parameter: TODO: type description here
49
+ # @return [ApiResponse] Complete http response with raw body and status code.
50
+ def get_several_tracks(ids,
51
+ market: nil)
52
+ @api_call
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: TODO: type description here
83
+ # @param [Integer] limit Optional parameter: Example:20
84
+ # @param [Integer] offset Optional parameter: Example:0
85
+ # @return [ApiResponse] Complete http response with raw body and status code.
86
+ def get_users_saved_tracks(market: nil,
87
+ limit: 20,
88
+ offset: 0)
89
+ @api_call
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: TODO: type description here
120
+ # @param [MeTracksRequest] body Optional parameter: TODO: type description
121
+ # here
122
+ # @return [ApiResponse] Complete http response with raw body and status code.
123
+ def save_tracks_user(ids,
124
+ body: nil)
125
+ @api_call
126
+ .request(new_request_builder(HttpMethodEnum::PUT,
127
+ '/me/tracks',
128
+ Server::DEFAULT)
129
+ .query_param(new_parameter(ids, key: 'ids'))
130
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
131
+ .body_param(new_parameter(body))
132
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
133
+ .auth(Single.new('oauth_2_0')))
134
+ .response(new_response_handler
135
+ .is_response_void(true)
136
+ .is_api_response(true)
137
+ .local_error('401',
138
+ "Bad or expired token. This can happen if the user revoked a'\
139
+ ' token or\nthe access token has expired. You should'\
140
+ ' re-authenticate the user.\n",
141
+ UnauthorizedException)
142
+ .local_error('403',
143
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
144
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
145
+ ' won't help here.\n",
146
+ ForbiddenException)
147
+ .local_error('429',
148
+ "The app has exceeded its rate limits.\n",
149
+ TooManyRequestsException))
150
+ .execute
151
+ end
152
+
153
+ # Remove one or more tracks from the current user's 'Your Music' library.
154
+ # @param [String] ids Required parameter: TODO: type description here
155
+ # @param [MeTracksRequest1] body Optional parameter: TODO: type description
156
+ # here
157
+ # @return [ApiResponse] Complete http response with raw body and status code.
158
+ def remove_tracks_user(ids,
159
+ body: nil)
160
+ @api_call
161
+ .request(new_request_builder(HttpMethodEnum::DELETE,
162
+ '/me/tracks',
163
+ Server::DEFAULT)
164
+ .query_param(new_parameter(ids, key: 'ids'))
165
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
166
+ .body_param(new_parameter(body))
167
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
168
+ .auth(Single.new('oauth_2_0')))
169
+ .response(new_response_handler
170
+ .is_response_void(true)
171
+ .is_api_response(true)
172
+ .local_error('401',
173
+ "Bad or expired token. This can happen if the user revoked a'\
174
+ ' token or\nthe access token has expired. You should'\
175
+ ' re-authenticate the user.\n",
176
+ UnauthorizedException)
177
+ .local_error('403',
178
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
179
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
180
+ ' won't help here.\n",
181
+ ForbiddenException)
182
+ .local_error('429',
183
+ "The app has exceeded its rate limits.\n",
184
+ TooManyRequestsException))
185
+ .execute
186
+ end
187
+
188
+ # Check if one or more tracks is already saved in the current Spotify user's
189
+ # 'Your Music' library.
190
+ # @param [String] ids Required parameter: TODO: type description here
191
+ # @return [ApiResponse] Complete http response with raw body and status code.
192
+ def check_users_saved_tracks(ids)
193
+ @api_call
194
+ .request(new_request_builder(HttpMethodEnum::GET,
195
+ '/me/tracks/contains',
196
+ Server::DEFAULT)
197
+ .query_param(new_parameter(ids, key: 'ids'))
198
+ .header_param(new_parameter('application/json', key: 'accept'))
199
+ .auth(Single.new('oauth_2_0')))
200
+ .response(new_response_handler
201
+ .deserializer(APIHelper.method(:deserialize_primitive_types))
202
+ .is_api_response(true)
203
+ .is_response_array(true)
204
+ .is_primitive_response(true)
205
+ .local_error('401',
206
+ "Bad or expired token. This can happen if the user revoked a'\
207
+ ' token or\nthe access token has expired. You should'\
208
+ ' re-authenticate the user.\n",
209
+ UnauthorizedException)
210
+ .local_error('403',
211
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
212
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
213
+ ' won't help here.\n",
214
+ ForbiddenException)
215
+ .local_error('429',
216
+ "The app has exceeded its rate limits.\n",
217
+ TooManyRequestsException))
218
+ .execute
219
+ end
220
+
221
+ # Get audio features for multiple tracks based on their Spotify IDs.
222
+ # @param [String] ids Required parameter: TODO: type description here
223
+ # @return [ApiResponse] Complete http response with raw body and status code.
224
+ def get_several_audio_features(ids)
225
+ @api_call
226
+ .request(new_request_builder(HttpMethodEnum::GET,
227
+ '/audio-features',
228
+ Server::DEFAULT)
229
+ .query_param(new_parameter(ids, key: 'ids'))
230
+ .header_param(new_parameter('application/json', key: 'accept'))
231
+ .auth(Single.new('oauth_2_0')))
232
+ .response(new_response_handler
233
+ .deserializer(APIHelper.method(:custom_type_deserializer))
234
+ .deserialize_into(ManyAudioFeatures.method(:from_hash))
235
+ .is_api_response(true)
236
+ .local_error('401',
237
+ "Bad or expired token. This can happen if the user revoked a'\
238
+ ' token or\nthe access token has expired. You should'\
239
+ ' re-authenticate the user.\n",
240
+ UnauthorizedException)
241
+ .local_error('403',
242
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
243
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
244
+ ' won't help here.\n",
245
+ ForbiddenException)
246
+ .local_error('429',
247
+ "The app has exceeded its rate limits.\n",
248
+ TooManyRequestsException))
249
+ .execute
250
+ end
251
+
252
+ # Get audio feature information for a single track identified by its unique
253
+ # Spotify ID.
254
+ # @param [String] id Required parameter: TODO: type description here
255
+ # @return [ApiResponse] Complete http response with raw body and status code.
256
+ def get_audio_features(id)
257
+ @api_call
258
+ .request(new_request_builder(HttpMethodEnum::GET,
259
+ '/audio-features/{id}',
260
+ Server::DEFAULT)
261
+ .template_param(new_parameter(id, key: 'id')
262
+ .should_encode(true))
263
+ .header_param(new_parameter('application/json', key: 'accept'))
264
+ .auth(Single.new('oauth_2_0')))
265
+ .response(new_response_handler
266
+ .deserializer(APIHelper.method(:custom_type_deserializer))
267
+ .deserialize_into(AudioFeaturesObject.method(:from_hash))
268
+ .is_api_response(true)
269
+ .local_error('401',
270
+ "Bad or expired token. This can happen if the user revoked a'\
271
+ ' token or\nthe access token has expired. You should'\
272
+ ' re-authenticate the user.\n",
273
+ UnauthorizedException)
274
+ .local_error('403',
275
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
276
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
277
+ ' won't help here.\n",
278
+ ForbiddenException)
279
+ .local_error('429',
280
+ "The app has exceeded its rate limits.\n",
281
+ TooManyRequestsException))
282
+ .execute
283
+ end
284
+
285
+ # Get a low-level audio analysis for a track in the Spotify catalog. The
286
+ # audio analysis describes the track’s structure and musical content,
287
+ # including rhythm, pitch, and timbre.
288
+ # @param [String] id Required parameter: TODO: type description here
289
+ # @return [ApiResponse] Complete http response with raw body and status code.
290
+ def get_audio_analysis(id)
291
+ @api_call
292
+ .request(new_request_builder(HttpMethodEnum::GET,
293
+ '/audio-analysis/{id}',
294
+ Server::DEFAULT)
295
+ .template_param(new_parameter(id, key: 'id')
296
+ .should_encode(true))
297
+ .header_param(new_parameter('application/json', key: 'accept'))
298
+ .auth(Single.new('oauth_2_0')))
299
+ .response(new_response_handler
300
+ .deserializer(APIHelper.method(:custom_type_deserializer))
301
+ .deserialize_into(AudioAnalysisObject.method(:from_hash))
302
+ .is_api_response(true)
303
+ .local_error('401',
304
+ "Bad or expired token. This can happen if the user revoked a'\
305
+ ' token or\nthe access token has expired. You should'\
306
+ ' re-authenticate the user.\n",
307
+ UnauthorizedException)
308
+ .local_error('403',
309
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
310
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
311
+ ' won't help here.\n",
312
+ ForbiddenException)
313
+ .local_error('429',
314
+ "The app has exceeded its rate limits.\n",
315
+ TooManyRequestsException))
316
+ .execute
317
+ end
318
+
319
+ # Recommendations are generated based on the available information for a
320
+ # given seed entity and matched against similar artists and tracks. If there
321
+ # is sufficient information about the provided seeds, a list of tracks will
322
+ # be returned together with pool size details.
323
+ # For artists and tracks that are very new or obscure there might not be
324
+ # enough data to generate a list of tracks.
325
+ # @param [Integer] limit Optional parameter: Example:20
326
+ # @param [String] market Optional parameter: TODO: type description here
327
+ # @param [String] seed_artists Optional parameter: TODO: type description
328
+ # here
329
+ # @param [String] seed_genres Optional parameter: TODO: type description
330
+ # here
331
+ # @param [String] seed_tracks Optional parameter: TODO: type description
332
+ # here
333
+ # @param [Float] min_acousticness Optional parameter: TODO: type description
334
+ # here
335
+ # @param [Float] max_acousticness Optional parameter: TODO: type description
336
+ # here
337
+ # @param [Float] target_acousticness Optional parameter: TODO: type
338
+ # description here
339
+ # @param [Float] min_danceability Optional parameter: TODO: type description
340
+ # here
341
+ # @param [Float] max_danceability Optional parameter: TODO: type description
342
+ # here
343
+ # @param [Float] target_danceability Optional parameter: TODO: type
344
+ # description here
345
+ # @param [Integer] min_duration_ms Optional parameter: TODO: type
346
+ # description here
347
+ # @param [Integer] max_duration_ms Optional parameter: TODO: type
348
+ # description here
349
+ # @param [Integer] target_duration_ms Optional parameter: TODO: type
350
+ # description here
351
+ # @param [Float] min_energy Optional parameter: TODO: type description
352
+ # here
353
+ # @param [Float] max_energy Optional parameter: TODO: type description
354
+ # here
355
+ # @param [Float] target_energy Optional parameter: TODO: type description
356
+ # here
357
+ # @param [Float] min_instrumentalness Optional parameter: TODO: type
358
+ # description here
359
+ # @param [Float] max_instrumentalness Optional parameter: TODO: type
360
+ # description here
361
+ # @param [Float] target_instrumentalness Optional parameter: TODO: type
362
+ # description here
363
+ # @param [Integer] min_key Optional parameter: TODO: type description here
364
+ # @param [Integer] max_key Optional parameter: TODO: type description here
365
+ # @param [Integer] target_key Optional parameter: TODO: type description
366
+ # here
367
+ # @param [Float] min_liveness Optional parameter: TODO: type description
368
+ # here
369
+ # @param [Float] max_liveness Optional parameter: TODO: type description
370
+ # here
371
+ # @param [Float] target_liveness Optional parameter: TODO: type description
372
+ # here
373
+ # @param [Float] min_loudness Optional parameter: TODO: type description
374
+ # here
375
+ # @param [Float] max_loudness Optional parameter: TODO: type description
376
+ # here
377
+ # @param [Float] target_loudness Optional parameter: TODO: type description
378
+ # here
379
+ # @param [Integer] min_mode Optional parameter: TODO: type description
380
+ # here
381
+ # @param [Integer] max_mode Optional parameter: TODO: type description
382
+ # here
383
+ # @param [Integer] target_mode Optional parameter: TODO: type description
384
+ # here
385
+ # @param [Integer] min_popularity Optional parameter: TODO: type description
386
+ # here
387
+ # @param [Integer] max_popularity Optional parameter: TODO: type description
388
+ # here
389
+ # @param [Integer] target_popularity Optional parameter: TODO: type
390
+ # description here
391
+ # @param [Float] min_speechiness Optional parameter: TODO: type description
392
+ # here
393
+ # @param [Float] max_speechiness Optional parameter: TODO: type description
394
+ # here
395
+ # @param [Float] target_speechiness Optional parameter: TODO: type
396
+ # description here
397
+ # @param [Float] min_tempo Optional parameter: TODO: type description here
398
+ # @param [Float] max_tempo Optional parameter: TODO: type description here
399
+ # @param [Float] target_tempo Optional parameter: TODO: type description
400
+ # here
401
+ # @param [Integer] min_time_signature Optional parameter: TODO: type
402
+ # description here
403
+ # @param [Integer] max_time_signature Optional parameter: TODO: type
404
+ # description here
405
+ # @param [Integer] target_time_signature Optional parameter: TODO: type
406
+ # description here
407
+ # @param [Float] min_valence Optional parameter: TODO: type description
408
+ # here
409
+ # @param [Float] max_valence Optional parameter: TODO: type description
410
+ # here
411
+ # @param [Float] target_valence Optional parameter: TODO: type description
412
+ # here
413
+ # @return [ApiResponse] Complete http response with raw body and status code.
414
+ def get_recommendations(limit: 20,
415
+ market: nil,
416
+ seed_artists: nil,
417
+ seed_genres: nil,
418
+ seed_tracks: nil,
419
+ min_acousticness: nil,
420
+ max_acousticness: nil,
421
+ target_acousticness: nil,
422
+ min_danceability: nil,
423
+ max_danceability: nil,
424
+ target_danceability: nil,
425
+ min_duration_ms: nil,
426
+ max_duration_ms: nil,
427
+ target_duration_ms: nil,
428
+ min_energy: nil,
429
+ max_energy: nil,
430
+ target_energy: nil,
431
+ min_instrumentalness: nil,
432
+ max_instrumentalness: nil,
433
+ target_instrumentalness: nil,
434
+ min_key: nil,
435
+ max_key: nil,
436
+ target_key: nil,
437
+ min_liveness: nil,
438
+ max_liveness: nil,
439
+ target_liveness: nil,
440
+ min_loudness: nil,
441
+ max_loudness: nil,
442
+ target_loudness: nil,
443
+ min_mode: nil,
444
+ max_mode: nil,
445
+ target_mode: nil,
446
+ min_popularity: nil,
447
+ max_popularity: nil,
448
+ target_popularity: nil,
449
+ min_speechiness: nil,
450
+ max_speechiness: nil,
451
+ target_speechiness: nil,
452
+ min_tempo: nil,
453
+ max_tempo: nil,
454
+ target_tempo: nil,
455
+ min_time_signature: nil,
456
+ max_time_signature: nil,
457
+ target_time_signature: nil,
458
+ min_valence: nil,
459
+ max_valence: nil,
460
+ target_valence: nil)
461
+ @api_call
462
+ .request(new_request_builder(HttpMethodEnum::GET,
463
+ '/recommendations',
464
+ Server::DEFAULT)
465
+ .query_param(new_parameter(limit, key: 'limit'))
466
+ .query_param(new_parameter(market, key: 'market'))
467
+ .query_param(new_parameter(seed_artists, key: 'seed_artists'))
468
+ .query_param(new_parameter(seed_genres, key: 'seed_genres'))
469
+ .query_param(new_parameter(seed_tracks, key: 'seed_tracks'))
470
+ .query_param(new_parameter(min_acousticness, key: 'min_acousticness'))
471
+ .query_param(new_parameter(max_acousticness, key: 'max_acousticness'))
472
+ .query_param(new_parameter(target_acousticness, key: 'target_acousticness'))
473
+ .query_param(new_parameter(min_danceability, key: 'min_danceability'))
474
+ .query_param(new_parameter(max_danceability, key: 'max_danceability'))
475
+ .query_param(new_parameter(target_danceability, key: 'target_danceability'))
476
+ .query_param(new_parameter(min_duration_ms, key: 'min_duration_ms'))
477
+ .query_param(new_parameter(max_duration_ms, key: 'max_duration_ms'))
478
+ .query_param(new_parameter(target_duration_ms, key: 'target_duration_ms'))
479
+ .query_param(new_parameter(min_energy, key: 'min_energy'))
480
+ .query_param(new_parameter(max_energy, key: 'max_energy'))
481
+ .query_param(new_parameter(target_energy, key: 'target_energy'))
482
+ .query_param(new_parameter(min_instrumentalness, key: 'min_instrumentalness'))
483
+ .query_param(new_parameter(max_instrumentalness, key: 'max_instrumentalness'))
484
+ .query_param(new_parameter(target_instrumentalness, key: 'target_instrumentalness'))
485
+ .query_param(new_parameter(min_key, key: 'min_key'))
486
+ .query_param(new_parameter(max_key, key: 'max_key'))
487
+ .query_param(new_parameter(target_key, key: 'target_key'))
488
+ .query_param(new_parameter(min_liveness, key: 'min_liveness'))
489
+ .query_param(new_parameter(max_liveness, key: 'max_liveness'))
490
+ .query_param(new_parameter(target_liveness, key: 'target_liveness'))
491
+ .query_param(new_parameter(min_loudness, key: 'min_loudness'))
492
+ .query_param(new_parameter(max_loudness, key: 'max_loudness'))
493
+ .query_param(new_parameter(target_loudness, key: 'target_loudness'))
494
+ .query_param(new_parameter(min_mode, key: 'min_mode'))
495
+ .query_param(new_parameter(max_mode, key: 'max_mode'))
496
+ .query_param(new_parameter(target_mode, key: 'target_mode'))
497
+ .query_param(new_parameter(min_popularity, key: 'min_popularity'))
498
+ .query_param(new_parameter(max_popularity, key: 'max_popularity'))
499
+ .query_param(new_parameter(target_popularity, key: 'target_popularity'))
500
+ .query_param(new_parameter(min_speechiness, key: 'min_speechiness'))
501
+ .query_param(new_parameter(max_speechiness, key: 'max_speechiness'))
502
+ .query_param(new_parameter(target_speechiness, key: 'target_speechiness'))
503
+ .query_param(new_parameter(min_tempo, key: 'min_tempo'))
504
+ .query_param(new_parameter(max_tempo, key: 'max_tempo'))
505
+ .query_param(new_parameter(target_tempo, key: 'target_tempo'))
506
+ .query_param(new_parameter(min_time_signature, key: 'min_time_signature'))
507
+ .query_param(new_parameter(max_time_signature, key: 'max_time_signature'))
508
+ .query_param(new_parameter(target_time_signature, key: 'target_time_signature'))
509
+ .query_param(new_parameter(min_valence, key: 'min_valence'))
510
+ .query_param(new_parameter(max_valence, key: 'max_valence'))
511
+ .query_param(new_parameter(target_valence, key: 'target_valence'))
512
+ .header_param(new_parameter('application/json', key: 'accept'))
513
+ .auth(Single.new('oauth_2_0')))
514
+ .response(new_response_handler
515
+ .deserializer(APIHelper.method(:custom_type_deserializer))
516
+ .deserialize_into(RecommendationsObject.method(:from_hash))
517
+ .is_api_response(true)
518
+ .local_error('401',
519
+ "Bad or expired token. This can happen if the user revoked a'\
520
+ ' token or\nthe access token has expired. You should'\
521
+ ' re-authenticate the user.\n",
522
+ UnauthorizedException)
523
+ .local_error('403',
524
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
525
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
526
+ ' won't help here.\n",
527
+ ForbiddenException)
528
+ .local_error('429',
529
+ "The app has exceeded its rate limits.\n",
530
+ TooManyRequestsException))
531
+ .execute
532
+ end
533
+ end
534
+ end