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