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,521 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # PlaylistsController
8
+ class PlaylistsController < BaseController
9
+ # Get a playlist owned by a Spotify user.
10
+ # @param [String] playlist_id Required parameter: Example:
11
+ # @param [String] market Optional parameter: Example:
12
+ # @param [String] fields Optional parameter: Example:
13
+ # @param [String] additional_types Optional parameter: Example:
14
+ # @return [PlaylistObject] response from the API call
15
+ def get_playlist(playlist_id,
16
+ market: nil,
17
+ fields: nil,
18
+ additional_types: nil)
19
+ new_api_call_builder
20
+ .request(new_request_builder(HttpMethodEnum::GET,
21
+ '/playlists/{playlist_id}',
22
+ Server::DEFAULT)
23
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
24
+ .should_encode(true))
25
+ .query_param(new_parameter(market, key: 'market'))
26
+ .query_param(new_parameter(fields, key: 'fields'))
27
+ .query_param(new_parameter(additional_types, key: 'additional_types'))
28
+ .header_param(new_parameter('application/json', key: 'accept'))
29
+ .auth(Single.new('oauth_2_0')))
30
+ .response(new_response_handler
31
+ .deserializer(APIHelper.method(:custom_type_deserializer))
32
+ .deserialize_into(PlaylistObject.method(:from_hash))
33
+ .is_api_response(true)
34
+ .local_error('401',
35
+ "Bad or expired token. This can happen if the user revoked a'\
36
+ ' token or\nthe access token has expired. You should'\
37
+ ' re-authenticate the user.\n",
38
+ UnauthorizedException)
39
+ .local_error('403',
40
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
41
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
42
+ ' won't help here.\n",
43
+ ForbiddenException)
44
+ .local_error('429',
45
+ "The app has exceeded its rate limits.\n",
46
+ TooManyRequestsException))
47
+ .execute
48
+ end
49
+
50
+ # Change a playlist's name and public/private state. (The user must, of
51
+ # course, own the playlist.)
52
+ # @param [String] playlist_id Required parameter: Example:
53
+ # @param [PlaylistsRequest] body Optional parameter: Example:
54
+ # @return [void] response from the API call
55
+ def change_playlist_details(playlist_id,
56
+ body: nil)
57
+ new_api_call_builder
58
+ .request(new_request_builder(HttpMethodEnum::PUT,
59
+ '/playlists/{playlist_id}',
60
+ Server::DEFAULT)
61
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
62
+ .should_encode(true))
63
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
64
+ .body_param(new_parameter(body))
65
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
66
+ .auth(Single.new('oauth_2_0')))
67
+ .response(new_response_handler
68
+ .is_response_void(true)
69
+ .is_api_response(true)
70
+ .local_error('401',
71
+ "Bad or expired token. This can happen if the user revoked a'\
72
+ ' token or\nthe access token has expired. You should'\
73
+ ' re-authenticate the user.\n",
74
+ UnauthorizedException)
75
+ .local_error('403',
76
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
77
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
78
+ ' won't help here.\n",
79
+ ForbiddenException)
80
+ .local_error('429',
81
+ "The app has exceeded its rate limits.\n",
82
+ TooManyRequestsException))
83
+ .execute
84
+ end
85
+
86
+ # Get full details of the items of a playlist owned by a Spotify user.
87
+ # @param [String] playlist_id Required parameter: Example:
88
+ # @param [String] market Optional parameter: Example:
89
+ # @param [String] fields Optional parameter: Example:
90
+ # @param [Integer] limit Optional parameter: Example:20
91
+ # @param [Integer] offset Optional parameter: Example:0
92
+ # @param [String] additional_types Optional parameter: Example:
93
+ # @return [PagingPlaylistTrackObject] response from the API call
94
+ def get_playlists_tracks(playlist_id,
95
+ market: nil,
96
+ fields: nil,
97
+ limit: 20,
98
+ offset: 0,
99
+ additional_types: nil)
100
+ new_api_call_builder
101
+ .request(new_request_builder(HttpMethodEnum::GET,
102
+ '/playlists/{playlist_id}/tracks',
103
+ Server::DEFAULT)
104
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
105
+ .should_encode(true))
106
+ .query_param(new_parameter(market, key: 'market'))
107
+ .query_param(new_parameter(fields, key: 'fields'))
108
+ .query_param(new_parameter(limit, key: 'limit'))
109
+ .query_param(new_parameter(offset, key: 'offset'))
110
+ .query_param(new_parameter(additional_types, key: 'additional_types'))
111
+ .header_param(new_parameter('application/json', key: 'accept'))
112
+ .auth(Single.new('oauth_2_0')))
113
+ .response(new_response_handler
114
+ .deserializer(APIHelper.method(:custom_type_deserializer))
115
+ .deserialize_into(PagingPlaylistTrackObject.method(:from_hash))
116
+ .is_api_response(true)
117
+ .local_error('401',
118
+ "Bad or expired token. This can happen if the user revoked a'\
119
+ ' token or\nthe access token has expired. You should'\
120
+ ' re-authenticate the user.\n",
121
+ UnauthorizedException)
122
+ .local_error('403',
123
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
124
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
125
+ ' won't help here.\n",
126
+ ForbiddenException)
127
+ .local_error('429',
128
+ "The app has exceeded its rate limits.\n",
129
+ TooManyRequestsException))
130
+ .execute
131
+ end
132
+
133
+ # Add one or more items to a user's playlist.
134
+ # @param [String] playlist_id Required parameter: Example:
135
+ # @param [Integer] position Optional parameter: Example:
136
+ # @param [String] uris Optional parameter: Example:
137
+ # @param [PlaylistsTracksRequest] body Optional parameter: Example:
138
+ # @return [PlaylistSnapshotId] response from the API call
139
+ def add_tracks_to_playlist(playlist_id,
140
+ position: nil,
141
+ uris: nil,
142
+ body: nil)
143
+ new_api_call_builder
144
+ .request(new_request_builder(HttpMethodEnum::POST,
145
+ '/playlists/{playlist_id}/tracks',
146
+ Server::DEFAULT)
147
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
148
+ .should_encode(true))
149
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
150
+ .query_param(new_parameter(position, key: 'position'))
151
+ .query_param(new_parameter(uris, key: 'uris'))
152
+ .body_param(new_parameter(body))
153
+ .header_param(new_parameter('application/json', key: 'accept'))
154
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
155
+ .auth(Single.new('oauth_2_0')))
156
+ .response(new_response_handler
157
+ .deserializer(APIHelper.method(:custom_type_deserializer))
158
+ .deserialize_into(PlaylistSnapshotId.method(:from_hash))
159
+ .is_api_response(true)
160
+ .local_error('401',
161
+ "Bad or expired token. This can happen if the user revoked a'\
162
+ ' token or\nthe access token has expired. You should'\
163
+ ' re-authenticate the user.\n",
164
+ UnauthorizedException)
165
+ .local_error('403',
166
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
167
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
168
+ ' won't help here.\n",
169
+ ForbiddenException)
170
+ .local_error('429',
171
+ "The app has exceeded its rate limits.\n",
172
+ TooManyRequestsException))
173
+ .execute
174
+ end
175
+
176
+ # Either reorder or replace items in a playlist depending on the request's
177
+ # parameters.
178
+ # To reorder items, include `range_start`, `insert_before`, `range_length`
179
+ # and `snapshot_id` in the request's body.
180
+ # To replace items, include `uris` as either a query parameter or in the
181
+ # request's body.
182
+ # Replacing items in a playlist will overwrite its existing items. This
183
+ # operation can be used for replacing or clearing items in a playlist.
184
+ # <br/>
185
+ # **Note**: Replace and reorder are mutually exclusive operations which
186
+ # share the same endpoint, but have different parameters.
187
+ # These operations can't be applied together in a single request.
188
+ # @param [String] playlist_id Required parameter: Example:
189
+ # @param [String] uris Optional parameter: Example:
190
+ # @param [PlaylistsTracksRequest1] body Optional parameter: Example:
191
+ # @return [PlaylistSnapshotId] response from the API call
192
+ def reorder_or_replace_playlists_tracks(playlist_id,
193
+ uris: nil,
194
+ body: nil)
195
+ new_api_call_builder
196
+ .request(new_request_builder(HttpMethodEnum::PUT,
197
+ '/playlists/{playlist_id}/tracks',
198
+ Server::DEFAULT)
199
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
200
+ .should_encode(true))
201
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
202
+ .query_param(new_parameter(uris, key: 'uris'))
203
+ .body_param(new_parameter(body))
204
+ .header_param(new_parameter('application/json', key: 'accept'))
205
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
206
+ .auth(Single.new('oauth_2_0')))
207
+ .response(new_response_handler
208
+ .deserializer(APIHelper.method(:custom_type_deserializer))
209
+ .deserialize_into(PlaylistSnapshotId.method(:from_hash))
210
+ .is_api_response(true)
211
+ .local_error('401',
212
+ "Bad or expired token. This can happen if the user revoked a'\
213
+ ' token or\nthe access token has expired. You should'\
214
+ ' re-authenticate the user.\n",
215
+ UnauthorizedException)
216
+ .local_error('403',
217
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
218
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
219
+ ' won't help here.\n",
220
+ ForbiddenException)
221
+ .local_error('429',
222
+ "The app has exceeded its rate limits.\n",
223
+ TooManyRequestsException))
224
+ .execute
225
+ end
226
+
227
+ # Remove one or more items from a user's playlist.
228
+ # @param [String] playlist_id Required parameter: Example:
229
+ # @param [PlaylistsTracksRequest2] body Optional parameter: Example:
230
+ # @return [PlaylistSnapshotId] response from the API call
231
+ def remove_tracks_playlist(playlist_id,
232
+ body: nil)
233
+ new_api_call_builder
234
+ .request(new_request_builder(HttpMethodEnum::DELETE,
235
+ '/playlists/{playlist_id}/tracks',
236
+ Server::DEFAULT)
237
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
238
+ .should_encode(true))
239
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
240
+ .body_param(new_parameter(body))
241
+ .header_param(new_parameter('application/json', key: 'accept'))
242
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
243
+ .auth(Single.new('oauth_2_0')))
244
+ .response(new_response_handler
245
+ .deserializer(APIHelper.method(:custom_type_deserializer))
246
+ .deserialize_into(PlaylistSnapshotId.method(:from_hash))
247
+ .is_api_response(true)
248
+ .local_error('401',
249
+ "Bad or expired token. This can happen if the user revoked a'\
250
+ ' token or\nthe access token has expired. You should'\
251
+ ' re-authenticate the user.\n",
252
+ UnauthorizedException)
253
+ .local_error('403',
254
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
255
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
256
+ ' won't help here.\n",
257
+ ForbiddenException)
258
+ .local_error('429',
259
+ "The app has exceeded its rate limits.\n",
260
+ TooManyRequestsException))
261
+ .execute
262
+ end
263
+
264
+ # Get a list of the playlists owned or followed by the current Spotify
265
+ # user.
266
+ # @param [Integer] limit Optional parameter: Example:20
267
+ # @param [Integer] offset Optional parameter: Example:0
268
+ # @return [PagingPlaylistObject] response from the API call
269
+ def get_a_list_of_current_users_playlists(limit: 20,
270
+ offset: 0)
271
+ new_api_call_builder
272
+ .request(new_request_builder(HttpMethodEnum::GET,
273
+ '/me/playlists',
274
+ Server::DEFAULT)
275
+ .query_param(new_parameter(limit, key: 'limit'))
276
+ .query_param(new_parameter(offset, key: 'offset'))
277
+ .header_param(new_parameter('application/json', key: 'accept'))
278
+ .auth(Single.new('oauth_2_0')))
279
+ .response(new_response_handler
280
+ .deserializer(APIHelper.method(:custom_type_deserializer))
281
+ .deserialize_into(PagingPlaylistObject.method(:from_hash))
282
+ .is_api_response(true)
283
+ .local_error('401',
284
+ "Bad or expired token. This can happen if the user revoked a'\
285
+ ' token or\nthe access token has expired. You should'\
286
+ ' re-authenticate the user.\n",
287
+ UnauthorizedException)
288
+ .local_error('403',
289
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
290
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
291
+ ' won't help here.\n",
292
+ ForbiddenException)
293
+ .local_error('429',
294
+ "The app has exceeded its rate limits.\n",
295
+ TooManyRequestsException))
296
+ .execute
297
+ end
298
+
299
+ # Get a list of the playlists owned or followed by a Spotify user.
300
+ # @param [String] user_id Required parameter: Example:
301
+ # @param [Integer] limit Optional parameter: Example:20
302
+ # @param [Integer] offset Optional parameter: Example:0
303
+ # @return [PagingPlaylistObject] response from the API call
304
+ def get_list_users_playlists(user_id,
305
+ limit: 20,
306
+ offset: 0)
307
+ new_api_call_builder
308
+ .request(new_request_builder(HttpMethodEnum::GET,
309
+ '/users/{user_id}/playlists',
310
+ Server::DEFAULT)
311
+ .template_param(new_parameter(user_id, key: 'user_id')
312
+ .should_encode(true))
313
+ .query_param(new_parameter(limit, key: 'limit'))
314
+ .query_param(new_parameter(offset, key: 'offset'))
315
+ .header_param(new_parameter('application/json', key: 'accept'))
316
+ .auth(Single.new('oauth_2_0')))
317
+ .response(new_response_handler
318
+ .deserializer(APIHelper.method(:custom_type_deserializer))
319
+ .deserialize_into(PagingPlaylistObject.method(:from_hash))
320
+ .is_api_response(true)
321
+ .local_error('401',
322
+ "Bad or expired token. This can happen if the user revoked a'\
323
+ ' token or\nthe access token has expired. You should'\
324
+ ' re-authenticate the user.\n",
325
+ UnauthorizedException)
326
+ .local_error('403',
327
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
328
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
329
+ ' won't help here.\n",
330
+ ForbiddenException)
331
+ .local_error('429',
332
+ "The app has exceeded its rate limits.\n",
333
+ TooManyRequestsException))
334
+ .execute
335
+ end
336
+
337
+ # Create a playlist for a Spotify user. (The playlist will be empty until
338
+ # you [add
339
+ # tracks](/documentation/web-api/reference/add-tracks-to-playlist).)
340
+ # Each user is generally limited to a maximum of 11000 playlists.
341
+ # @param [String] user_id Required parameter: Example:
342
+ # @param [UsersPlaylistsRequest] body Optional parameter: Example:
343
+ # @return [PlaylistObject] response from the API call
344
+ def create_playlist(user_id,
345
+ body: nil)
346
+ new_api_call_builder
347
+ .request(new_request_builder(HttpMethodEnum::POST,
348
+ '/users/{user_id}/playlists',
349
+ Server::DEFAULT)
350
+ .template_param(new_parameter(user_id, key: 'user_id')
351
+ .should_encode(true))
352
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
353
+ .body_param(new_parameter(body))
354
+ .header_param(new_parameter('application/json', key: 'accept'))
355
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
356
+ .auth(Single.new('oauth_2_0')))
357
+ .response(new_response_handler
358
+ .deserializer(APIHelper.method(:custom_type_deserializer))
359
+ .deserialize_into(PlaylistObject.method(:from_hash))
360
+ .is_api_response(true)
361
+ .local_error('401',
362
+ "Bad or expired token. This can happen if the user revoked a'\
363
+ ' token or\nthe access token has expired. You should'\
364
+ ' re-authenticate the user.\n",
365
+ UnauthorizedException)
366
+ .local_error('403',
367
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
368
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
369
+ ' won't help here.\n",
370
+ ForbiddenException)
371
+ .local_error('429',
372
+ "The app has exceeded its rate limits.\n",
373
+ TooManyRequestsException))
374
+ .execute
375
+ end
376
+
377
+ # Get a list of Spotify featured playlists (shown, for example, on a Spotify
378
+ # player's 'Browse' tab).
379
+ # @param [String] locale Optional parameter: Example:
380
+ # @param [Integer] limit Optional parameter: Example:20
381
+ # @param [Integer] offset Optional parameter: Example:0
382
+ # @return [PagingFeaturedPlaylistObject] response from the API call
383
+ def get_featured_playlists(locale: nil,
384
+ limit: 20,
385
+ offset: 0)
386
+ new_api_call_builder
387
+ .request(new_request_builder(HttpMethodEnum::GET,
388
+ '/browse/featured-playlists',
389
+ Server::DEFAULT)
390
+ .query_param(new_parameter(locale, key: 'locale'))
391
+ .query_param(new_parameter(limit, key: 'limit'))
392
+ .query_param(new_parameter(offset, key: 'offset'))
393
+ .header_param(new_parameter('application/json', key: 'accept'))
394
+ .auth(Single.new('oauth_2_0')))
395
+ .response(new_response_handler
396
+ .deserializer(APIHelper.method(:custom_type_deserializer))
397
+ .deserialize_into(PagingFeaturedPlaylistObject.method(:from_hash))
398
+ .is_api_response(true)
399
+ .local_error('401',
400
+ "Bad or expired token. This can happen if the user revoked a'\
401
+ ' token or\nthe access token has expired. You should'\
402
+ ' re-authenticate the user.\n",
403
+ UnauthorizedException)
404
+ .local_error('403',
405
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
406
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
407
+ ' won't help here.\n",
408
+ ForbiddenException)
409
+ .local_error('429',
410
+ "The app has exceeded its rate limits.\n",
411
+ TooManyRequestsException))
412
+ .execute
413
+ end
414
+
415
+ # Get a list of Spotify playlists tagged with a particular category.
416
+ # @param [String] category_id Required parameter: Example:
417
+ # @param [Integer] limit Optional parameter: Example:20
418
+ # @param [Integer] offset Optional parameter: Example:0
419
+ # @return [PagingFeaturedPlaylistObject] response from the API call
420
+ def get_a_categories_playlists(category_id,
421
+ limit: 20,
422
+ offset: 0)
423
+ new_api_call_builder
424
+ .request(new_request_builder(HttpMethodEnum::GET,
425
+ '/browse/categories/{category_id}/playlists',
426
+ Server::DEFAULT)
427
+ .template_param(new_parameter(category_id, key: 'category_id')
428
+ .should_encode(true))
429
+ .query_param(new_parameter(limit, key: 'limit'))
430
+ .query_param(new_parameter(offset, key: 'offset'))
431
+ .header_param(new_parameter('application/json', key: 'accept'))
432
+ .auth(Single.new('oauth_2_0')))
433
+ .response(new_response_handler
434
+ .deserializer(APIHelper.method(:custom_type_deserializer))
435
+ .deserialize_into(PagingFeaturedPlaylistObject.method(:from_hash))
436
+ .is_api_response(true)
437
+ .local_error('401',
438
+ "Bad or expired token. This can happen if the user revoked a'\
439
+ ' token or\nthe access token has expired. You should'\
440
+ ' re-authenticate the user.\n",
441
+ UnauthorizedException)
442
+ .local_error('403',
443
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
444
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
445
+ ' won't help here.\n",
446
+ ForbiddenException)
447
+ .local_error('429',
448
+ "The app has exceeded its rate limits.\n",
449
+ TooManyRequestsException))
450
+ .execute
451
+ end
452
+
453
+ # Get the current image associated with a specific playlist.
454
+ # @param [String] playlist_id Required parameter: Example:
455
+ # @return [Array[ImageObject]] response from the API call
456
+ def get_playlist_cover(playlist_id)
457
+ new_api_call_builder
458
+ .request(new_request_builder(HttpMethodEnum::GET,
459
+ '/playlists/{playlist_id}/images',
460
+ Server::DEFAULT)
461
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
462
+ .should_encode(true))
463
+ .header_param(new_parameter('application/json', key: 'accept'))
464
+ .auth(Single.new('oauth_2_0')))
465
+ .response(new_response_handler
466
+ .deserializer(APIHelper.method(:custom_type_deserializer))
467
+ .deserialize_into(ImageObject.method(:from_hash))
468
+ .is_api_response(true)
469
+ .is_response_array(true)
470
+ .local_error('401',
471
+ "Bad or expired token. This can happen if the user revoked a'\
472
+ ' token or\nthe access token has expired. You should'\
473
+ ' re-authenticate the user.\n",
474
+ UnauthorizedException)
475
+ .local_error('403',
476
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
477
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
478
+ ' won't help here.\n",
479
+ ForbiddenException)
480
+ .local_error('429',
481
+ "The app has exceeded its rate limits.\n",
482
+ TooManyRequestsException))
483
+ .execute
484
+ end
485
+
486
+ # Replace the image used to represent a specific playlist.
487
+ # @param [String] playlist_id Required parameter: Example:
488
+ # @param [Object] body Required parameter: Example:
489
+ # @return [void] response from the API call
490
+ def upload_custom_playlist_cover(playlist_id,
491
+ body)
492
+ new_api_call_builder
493
+ .request(new_request_builder(HttpMethodEnum::PUT,
494
+ '/playlists/{playlist_id}/images',
495
+ Server::DEFAULT)
496
+ .template_param(new_parameter(playlist_id, key: 'playlist_id')
497
+ .should_encode(true))
498
+ .body_param(new_parameter(body))
499
+ .header_param(new_parameter('application/json; charset=utf-8', key: 'content-type'))
500
+ .body_serializer(APIHelper.method(:json_serialize))
501
+ .auth(Single.new('oauth_2_0')))
502
+ .response(new_response_handler
503
+ .is_response_void(true)
504
+ .is_api_response(true)
505
+ .local_error('401',
506
+ "Bad or expired token. This can happen if the user revoked a'\
507
+ ' token or\nthe access token has expired. You should'\
508
+ ' re-authenticate the user.\n",
509
+ UnauthorizedException)
510
+ .local_error('403',
511
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
512
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
513
+ ' won't help here.\n",
514
+ ForbiddenException)
515
+ .local_error('429',
516
+ "The app has exceeded its rate limits.\n",
517
+ TooManyRequestsException))
518
+ .execute
519
+ end
520
+ end
521
+ end
@@ -0,0 +1,60 @@
1
+ # spotify_web_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module SpotifyWebApi
7
+ # SearchController
8
+ class SearchController < BaseController
9
+ # Get Spotify catalog information about albums, artists, playlists, tracks,
10
+ # shows, episodes or audiobooks
11
+ # that match a keyword string. Audiobooks are only available within the US,
12
+ # UK, Canada, Ireland, New Zealand and Australia markets.
13
+ # @param [String] q Required parameter: Example:
14
+ # @param [Array[ItemTypeEnum]] type Required parameter: Example:
15
+ # @param [String] market Optional parameter: Example:
16
+ # @param [Integer] limit Optional parameter: Example:20
17
+ # @param [Integer] offset Optional parameter: Example:0
18
+ # @param [IncludeExternalEnum] include_external Optional parameter:
19
+ # Example:
20
+ # @return [SearchItems] response from the API call
21
+ def search(q,
22
+ type,
23
+ market: nil,
24
+ limit: 20,
25
+ offset: 0,
26
+ include_external: nil)
27
+ new_api_call_builder
28
+ .request(new_request_builder(HttpMethodEnum::GET,
29
+ '/search',
30
+ Server::DEFAULT)
31
+ .query_param(new_parameter(q, key: 'q'))
32
+ .query_param(new_parameter(type, key: 'type'))
33
+ .query_param(new_parameter(market, key: 'market'))
34
+ .query_param(new_parameter(limit, key: 'limit'))
35
+ .query_param(new_parameter(offset, key: 'offset'))
36
+ .query_param(new_parameter(include_external, key: 'include_external'))
37
+ .header_param(new_parameter('application/json', key: 'accept'))
38
+ .auth(Single.new('oauth_2_0'))
39
+ .array_serialization_format(ArraySerializationFormat::CSV))
40
+ .response(new_response_handler
41
+ .deserializer(APIHelper.method(:custom_type_deserializer))
42
+ .deserialize_into(SearchItems.method(:from_hash))
43
+ .is_api_response(true)
44
+ .local_error('401',
45
+ "Bad or expired token. This can happen if the user revoked a'\
46
+ ' token or\nthe access token has expired. You should'\
47
+ ' re-authenticate the user.\n",
48
+ UnauthorizedException)
49
+ .local_error('403',
50
+ "Bad OAuth request (wrong consumer key, bad nonce, expired'\
51
+ '\ntimestamp...). Unfortunately, re-authenticating the user'\
52
+ ' won't help here.\n",
53
+ ForbiddenException)
54
+ .local_error('429',
55
+ "The app has exceeded its rate limits.\n",
56
+ TooManyRequestsException))
57
+ .execute
58
+ end
59
+ end
60
+ end