spotify 9.1.0 → 10.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 (4) hide show
  1. data/lib/spotify.rb +34 -10
  2. data/lib/spotify/version.rb +1 -1
  3. data/spec/api.h +169 -50
  4. metadata +15 -14
@@ -70,7 +70,15 @@ module Spotify
70
70
  :index_out_of_range, :user_needs_premium,
71
71
  :other_transient, :is_loading, :no_stream_available,
72
72
  :permission_denied, :inbox_is_full, :no_cache,
73
- :no_such_user, :no_credentials]
73
+ :no_such_user, :no_credentials,
74
+
75
+ :network_disabled, :invalid_device_id,
76
+ :cant_open_trace_file, :application_banned,
77
+
78
+ :offline_too_many_tracks, 31,
79
+ :offline_disk_cache, :offline_expired,
80
+ :offline_not_allowed, :offline_license_lost,
81
+ :offline_license_error]
74
82
 
75
83
  # @macro [attach] attach_function
76
84
  #
@@ -154,7 +162,8 @@ module Spotify
154
162
  :start_playback, callback([ :session ], :void),
155
163
  :stop_playback, callback([ :session ], :void),
156
164
  :get_audio_buffer_stats, callback([ :session, AudioBufferStats ], :void),
157
- :offline_status_updated, callback([ :session ], :void)
165
+ :offline_status_updated, callback([ :session ], :void),
166
+ :offline_error, callback([ :session, :error ], :void)
158
167
  end
159
168
 
160
169
  # FFI::Struct for Session configuration.
@@ -179,7 +188,9 @@ module Spotify
179
188
  :userdata, :userdata,
180
189
  :compress_playlists, Bool,
181
190
  :dont_save_metadata_for_playlists, Bool,
182
- :initially_unload_playlists, Bool
191
+ :initially_unload_playlists, Bool,
192
+ :device_id, :pointer,
193
+ :tracefile, :pointer
183
194
  end
184
195
 
185
196
  # FFI::Struct for Offline Sync Status
@@ -242,8 +253,6 @@ module Spotify
242
253
  attach_function :session_starred_for_user_create, :sp_session_starred_for_user_create, [ :session, :string ], :playlist
243
254
  attach_function :session_publishedcontainer_for_user_create, :sp_session_publishedcontainer_for_user_create, [ :playlist, :string ], :playlistcontainer
244
255
  attach_function :session_preferred_bitrate, :sp_session_preferred_bitrate, [ :session, :bitrate ], :void
245
- attach_function :session_num_friends, :sp_session_num_friends, [ :session ], :int
246
- attach_function :session_friend, :sp_session_friend, [ :session, :int ], :user
247
256
 
248
257
  attach_function :session_set_connection_type, :sp_session_set_connection_type, [ :session, :connection_type ], :void
249
258
  attach_function :session_set_connection_rules, :sp_session_set_connection_rules, [ :session, :connection_rules ], :void
@@ -256,6 +265,9 @@ module Spotify
256
265
  attach_function :session_user_country, :sp_session_user_country, [ :session ], :int
257
266
  attach_function :session_preferred_offline_bitrate, :sp_session_preferred_offline_bitrate, [ :session, :bitrate, :bool ], :void
258
267
 
268
+ attach_function :session_set_volume_normalization, :sp_session_set_volume_normalization, [ :session, :bool ], :void
269
+ attach_function :session_get_volume_normalization, :sp_session_get_volume_normalization, [ :session ], :bool
270
+
259
271
  #
260
272
  # Link
261
273
  #
@@ -292,10 +304,15 @@ module Spotify
292
304
  #
293
305
  # @see http://developer.spotify.com/en/libspotify/docs/group__track.html
294
306
 
307
+ enum :availability, [:unavailable, :available, :not_streamable, :banned_by_artist]
308
+ typedef :availability, :track_availability
309
+
310
+ enum :track_offline_status, [:no, :waiting, :downloading, :done, :error, :done_expired, :limit_exceeded, :done_resync]
311
+
295
312
  #
296
313
  attach_function :track_is_loaded, :sp_track_is_loaded, [ :track ], :bool
297
314
  attach_function :track_error, :sp_track_error, [ :track ], :error
298
- attach_function :track_is_available, :sp_track_is_available, [ :session, :track ], :bool
315
+ attach_function :track_get_availability, :sp_track_get_availability, [ :session, :track ], :track_availability
299
316
  attach_function :track_is_local, :sp_track_is_local, [ :session, :track ], :bool
300
317
  attach_function :track_is_autolinked, :sp_track_is_autolinked, [ :session, :track ], :bool
301
318
  attach_function :track_is_starred, :sp_track_is_starred, [ :session, :track ], :bool
@@ -308,6 +325,10 @@ module Spotify
308
325
  attach_function :track_popularity, :sp_track_popularity, [ :track ], :int
309
326
  attach_function :track_disc, :sp_track_disc, [ :track ], :int
310
327
  attach_function :track_index, :sp_track_index, [ :track ], :int
328
+ attach_function :track_is_placeholder, :sp_track_is_placeholder, [ :track ], :bool
329
+
330
+ attach_function :track_offline_get_status, :sp_track_offline_get_status, [ :track ], :track_offline_status
331
+
311
332
  attach_function :localtrack_create, :sp_localtrack_create, [ :string, :string, :string, :int ], :track
312
333
 
313
334
  attach_function :track_add_ref, :sp_track_add_ref, [ :track ], :void
@@ -349,6 +370,7 @@ module Spotify
349
370
  attach_function :albumbrowse_num_tracks, :sp_albumbrowse_num_tracks, [ :albumbrowse ], :int
350
371
  attach_function :albumbrowse_track, :sp_albumbrowse_track, [ :albumbrowse, :int ], :track
351
372
  attach_function :albumbrowse_review, :sp_albumbrowse_review, [ :albumbrowse ], :string
373
+ attach_function :albumbrowse_backend_request_duration, :sp_albumbrowse_backend_request_duration, [ :albumbrowse ], :int
352
374
 
353
375
  attach_function :albumbrowse_add_ref, :sp_albumbrowse_add_ref, [ :albumbrowse ], :void
354
376
  attach_function :albumbrowse_release, :sp_albumbrowse_release, [ :albumbrowse ], :void
@@ -361,6 +383,7 @@ module Spotify
361
383
  #
362
384
  attach_function :artist_name, :sp_artist_name, [ :artist ], :string
363
385
  attach_function :artist_is_loaded, :sp_artist_is_loaded, [ :artist ], :bool
386
+ attach_function :artist_portrait, :sp_artist_portrait, [ :artist ], :image_id
364
387
 
365
388
  attach_function :artist_add_ref, :sp_artist_add_ref, [ :artist ], :void
366
389
  attach_function :artist_release, :sp_artist_release, [ :artist ], :void
@@ -370,9 +393,11 @@ module Spotify
370
393
  #
371
394
  # @see http://developer.spotify.com/en/libspotify/docs/group__artistbrowse.html
372
395
 
396
+ enum :artistbrowse_type, [:full, :no_tracks, :no_albums]
397
+
373
398
  #
374
399
  callback :artistbrowse_complete_cb, [:artistbrowse, :userdata], :void
375
- attach_function :artistbrowse_create, :sp_artistbrowse_create, [ :session, :artist, :artistbrowse_complete_cb, :userdata ], :artistbrowse
400
+ attach_function :artistbrowse_create, :sp_artistbrowse_create, [ :session, :artist, :artistbrowse_type, :artistbrowse_complete_cb, :userdata ], :artistbrowse
376
401
  attach_function :artistbrowse_is_loaded, :sp_artistbrowse_is_loaded, [ :artistbrowse ], :bool
377
402
  attach_function :artistbrowse_error, :sp_artistbrowse_error, [ :artistbrowse ], :error
378
403
  attach_function :artistbrowse_artist, :sp_artistbrowse_artist, [ :artistbrowse ], :artist
@@ -385,6 +410,7 @@ module Spotify
385
410
  attach_function :artistbrowse_num_similar_artists, :sp_artistbrowse_num_similar_artists, [ :artistbrowse ], :int
386
411
  attach_function :artistbrowse_similar_artist, :sp_artistbrowse_similar_artist, [ :artistbrowse, :int ], :artist
387
412
  attach_function :artistbrowse_biography, :sp_artistbrowse_biography, [ :artistbrowse ], :string
413
+ attach_function :artistbrowse_backend_request_duration, :sp_artistbrowse_backend_request_duration, [ :artistbrowse ], :int
388
414
 
389
415
  attach_function :artistbrowse_add_ref, :sp_artistbrowse_add_ref, [ :artistbrowse ], :void
390
416
  attach_function :artistbrowse_release, :sp_artistbrowse_release, [ :artistbrowse ], :void
@@ -600,9 +626,6 @@ module Spotify
600
626
  attach_function :user_canonical_name, :sp_user_canonical_name, [ :user ], :string
601
627
  attach_function :user_display_name, :sp_user_display_name, [ :user ], :string
602
628
  attach_function :user_is_loaded, :sp_user_is_loaded, [ :user ], :bool
603
- attach_function :user_full_name, :sp_user_full_name, [ :user ], :string
604
- attach_function :user_picture, :sp_user_picture, [ :user ], :string
605
- attach_function :user_relation_type, :sp_user_relation_type, [ :session, :user ], :relation_type
606
629
 
607
630
  attach_function :user_add_ref, :sp_user_add_ref, [ :user ], :void
608
631
  attach_function :user_release, :sp_user_release, [ :user ], :void
@@ -626,6 +649,7 @@ module Spotify
626
649
  attach_function :toplistbrowse_album, :sp_toplistbrowse_album, [ :toplistbrowse, :int ], :album
627
650
  attach_function :toplistbrowse_num_tracks, :sp_toplistbrowse_num_tracks, [ :toplistbrowse ], :int
628
651
  attach_function :toplistbrowse_track, :sp_toplistbrowse_track, [ :toplistbrowse, :int ], :track
652
+ attach_function :toplistbrowse_backend_request_duration, :sp_toplistbrowse_backend_request_duration, [ :toplistbrowse ], :int
629
653
 
630
654
  attach_function :toplistbrowse_add_ref, :sp_toplistbrowse_add_ref, [ :toplistbrowse ], :void
631
655
  attach_function :toplistbrowse_release, :sp_toplistbrowse_release, [ :toplistbrowse ], :void
@@ -1,4 +1,4 @@
1
1
  module Spotify
2
2
  # See README for versioning policy.
3
- VERSION = [9, 1, 0].join('.')
3
+ VERSION = [10, 0, 0].join('.')
4
4
  end
data/spec/api.h CHANGED
@@ -43,6 +43,8 @@ extern "C" {
43
43
  /* Includes */
44
44
  #include <stddef.h>
45
45
 
46
+ //endif
47
+
46
48
  #ifdef _WIN32
47
49
  typedef unsigned __int64 sp_uint64;
48
50
  #else
@@ -116,6 +118,17 @@ typedef enum sp_error {
116
118
  SP_ERROR_NO_CACHE = 21, ///< Cache is not enabled
117
119
  SP_ERROR_NO_SUCH_USER = 22, ///< Requested user does not exist
118
120
  SP_ERROR_NO_CREDENTIALS = 23, ///< No credentials are stored
121
+ SP_ERROR_NETWORK_DISABLED = 24, ///< Network disabled
122
+ SP_ERROR_INVALID_DEVICE_ID = 25, ///< Invalid device ID
123
+ SP_ERROR_CANT_OPEN_TRACE_FILE = 26, ///< Unable to open trace file
124
+ SP_ERROR_APPLICATION_BANNED = 27, ///< This application is no longer allowed to use the Spotify service
125
+ //endif
126
+ SP_ERROR_OFFLINE_TOO_MANY_TRACKS = 31, ///< Reached the device limit for number of tracks to download
127
+ SP_ERROR_OFFLINE_DISK_CACHE = 32, ///< Disk cache is full so no more tracks can be downloaded to offline mode
128
+ SP_ERROR_OFFLINE_EXPIRED = 33, ///< Offline key has expired, the user needs to go online again
129
+ SP_ERROR_OFFLINE_NOT_ALLOWED = 34, ///< This user is not allowed to use offline mode
130
+ SP_ERROR_OFFLINE_LICENSE_LOST = 35, ///< The license for this device has been lost. Most likely because the user used offline on three other device
131
+ SP_ERROR_OFFLINE_LICENSE_ERROR = 36, ///< The Spotify license server does not respond correctly
119
132
  } sp_error;
120
133
 
121
134
  /**
@@ -147,7 +160,7 @@ SP_LIBEXPORT(const char*) sp_error_message(sp_error error);
147
160
  * returned from sp_session_create(). Future versions of the library will provide you with some kind of mechanism
148
161
  * to request an updated version of the library.
149
162
  */
150
- #define SPOTIFY_API_VERSION 9
163
+ #define SPOTIFY_API_VERSION 10
151
164
 
152
165
  /**
153
166
  * Describes the current state of the connection
@@ -206,6 +219,30 @@ typedef enum sp_playlist_offline_status {
206
219
  SP_PLAYLIST_OFFLINE_STATUS_WAITING = 3, ///< Playlist is queued for download
207
220
  } sp_playlist_offline_status;
208
221
 
222
+ /**
223
+ * Track availability
224
+ */
225
+ typedef enum sp_availability {
226
+ SP_TRACK_AVAILABILITY_UNAVAILABLE = 0, ///< Track is not available
227
+ SP_TRACK_AVAILABILITY_AVAILABLE = 1, ///< Track is available and can be played
228
+ SP_TRACK_AVAILABILITY_NOT_STREAMABLE = 2, ///< Track can not be streamed using this account
229
+ SP_TRACK_AVAILABILITY_BANNED_BY_ARTIST = 3, ///< Track not available on artist's reqeust
230
+ } sp_track_availability;
231
+
232
+ /**
233
+ * Track offline status
234
+ */
235
+ typedef enum sp_track_offline_status {
236
+ SP_TRACK_OFFLINE_NO = 0, ///< Not marked for offline
237
+ SP_TRACK_OFFLINE_WAITING = 1, ///< Waiting for download
238
+ SP_TRACK_OFFLINE_DOWNLOADING = 2, ///< Currently downloading
239
+ SP_TRACK_OFFLINE_DONE = 3, ///< Downloaded OK and can be played
240
+ SP_TRACK_OFFLINE_ERROR = 4, ///< Error during download
241
+ SP_TRACK_OFFLINE_DONE_EXPIRED = 5, ///< Downloaded OK but not playable due to expiery
242
+ SP_TRACK_OFFLINE_LIMIT_EXCEEDED = 6, ///< Waiting because device have reached max number of allowed tracks
243
+ SP_TRACK_OFFLINE_DONE_RESYNC = 7, ///< Downloaded OK and available but scheduled for re-download
244
+ } sp_track_offline_status;
245
+
209
246
  /**
210
247
  * Buffer stats used by get_audio_buffer_stats callback
211
248
  */
@@ -249,6 +286,23 @@ typedef enum sp_connection_rules {
249
286
  } sp_connection_rules;
250
287
 
251
288
 
289
+ /**
290
+ * Controls the type of data that will be included in artist browse queries
291
+ */
292
+ typedef enum sp_artistbrowse_type {
293
+ SP_ARTISTBROWSE_FULL, /**< All information */
294
+ SP_ARTISTBROWSE_NO_TRACKS, /**< Only albums and data about them, no tracks.
295
+ In other words, sp_artistbrowse_num_tracks() will return 0
296
+ */
297
+ SP_ARTISTBROWSE_NO_ALBUMS, /**< Only return data about the artist (artist name, similar artist
298
+ biography, etc
299
+ No tracks or album will be abailable.
300
+ sp_artistbrowse_num_tracks() and sp_artistbrowse_num_albums()
301
+ will both return 0
302
+ */
303
+ } sp_artistbrowse_type;
304
+
305
+
252
306
  /**
253
307
  * Offline sync status
254
308
  */
@@ -294,8 +348,6 @@ typedef struct sp_offline_sync_status {
294
348
  } sp_offline_sync_status;
295
349
 
296
350
 
297
-
298
-
299
351
  /**
300
352
  * Session callbacks
301
353
  *
@@ -496,6 +548,16 @@ typedef struct sp_session_callbacks {
496
548
  */
497
549
  void (SP_CALLCONV *offline_status_updated)(sp_session *session);
498
550
 
551
+ /**
552
+ * Called when offline synchronization status is updated
553
+ *
554
+ * @param[in] session Session
555
+ * @param[in] error Offline error. Will be SP_ERROR_OK if the offline synchronization
556
+ * error state has cleared
557
+ */
558
+ void (SP_CALLCONV *offline_error)(sp_session *session, sp_error error);
559
+
560
+ //endif
499
561
  } sp_session_callbacks;
500
562
 
501
563
  /**
@@ -539,6 +601,17 @@ typedef struct sp_session_config {
539
601
  * See sp_playlist_is_in_ram() for more details.
540
602
  */
541
603
  bool initially_unload_playlists;
604
+
605
+ /**
606
+ * Device ID for offline synchronization
607
+ */
608
+ const char *device_id;
609
+
610
+ /**
611
+ * Path to API trace file
612
+ */
613
+ const char *tracefile;
614
+
542
615
  } sp_session_config;
543
616
 
544
617
  /**
@@ -560,6 +633,7 @@ typedef struct sp_session_config {
560
633
  * SP_ERROR_BAD_USER_AGENT
561
634
  * SP_ERROR_BAD_APPLICATION_KEY
562
635
  * SP_ERROR_API_INITIALIZATION_FAILED
636
+ * SP_ERROR_INVALID_DEVICE_ID
563
637
  */
564
638
  SP_LIBEXPORT(sp_error) sp_session_create(const sp_session_config *config, sp_session **sess);
565
639
 
@@ -583,11 +657,10 @@ SP_LIBEXPORT(void) sp_session_release(sp_session *sess);
583
657
  * @skip sp_session_login
584
658
  * @until }
585
659
  *
586
- * @param[in] session Your session object
587
- * @param[in] username The username to log in
588
- * @param[in] password The password for the specified username
589
- * @param[in] remember_me If set, the username / password will be remembered by libspotify
590
- *
660
+ * @param[in] session Your session object
661
+ * @param[in] username The username to log in
662
+ * @param[in] password The password for the specified username
663
+ * @param[in] remember_me If set, the username / password will be remembered by libspotify
591
664
  */
592
665
  SP_LIBEXPORT(void) sp_session_login(sp_session *session, const char *username, const char *password, bool remember_me);
593
666
 
@@ -831,26 +904,26 @@ SP_LIBEXPORT(void) sp_session_preferred_offline_bitrate(sp_session *session, sp_
831
904
 
832
905
 
833
906
  /**
834
- * Return number of friends in the currently logged in users friends list.
907
+ * Return status of volume normalization
835
908
  *
836
909
  * @param[in] session Session object
910
+ *
911
+ * @return true iff volume normalization is enabled
837
912
  *
838
- * @return Number of users in friends. Each user can be extracted using the sp_session_friend() method
839
- * The number of users in the list will not be updated nor change order between calls to
840
- * sp_session_process_events()
841
913
  */
842
- SP_LIBEXPORT(int) sp_session_num_friends(sp_session *session);
914
+ SP_LIBEXPORT(bool) sp_session_get_volume_normalization(sp_session *session);
915
+
843
916
 
844
917
  /**
845
- * Retrun the given user from the currently logged in users list of friends
918
+ * Set volume normalization
846
919
  *
847
920
  * @param[in] session Session object
848
- * @param[in] index Index in list
921
+ * @param[in] on True iff volume normalization should be enabled
849
922
  *
850
- * @return A user. The object is owned by the session so the caller should not release it.
851
923
  */
852
- SP_LIBEXPORT(sp_user *) sp_session_friend(sp_session *session, int index);
924
+ SP_LIBEXPORT(void) sp_session_set_volume_normalization(sp_session *session, bool on);
853
925
 
926
+ //endif
854
927
 
855
928
  /**
856
929
  * Set to true if the connection is currently routed over a roamed connectivity
@@ -932,7 +1005,6 @@ SP_LIBEXPORT(int) sp_offline_time_left(sp_session *session);
932
1005
  SP_LIBEXPORT(int) sp_session_user_country(sp_session *session);
933
1006
 
934
1007
 
935
-
936
1008
  /** @} */
937
1009
 
938
1010
 
@@ -1232,18 +1304,30 @@ SP_LIBEXPORT(bool) sp_track_is_loaded(sp_track *track);
1232
1304
  */
1233
1305
  SP_LIBEXPORT(sp_error) sp_track_error(sp_track *track);
1234
1306
 
1307
+
1308
+ /**
1309
+ * Return offline status for a track. sp_session_callbacks::metadata_updated() will be invoked when
1310
+ * offline status of a track changes
1311
+ *
1312
+ * @param[in] track The track
1313
+ *
1314
+ * @return Stats as described by ::sp_track_offline_status
1315
+ *
1316
+ */
1317
+ SP_LIBEXPORT(sp_track_offline_status) sp_track_offline_get_status(sp_track *track);
1318
+
1235
1319
  /**
1236
- * Return true if the track is available for playback.
1320
+ * Return availability for a track
1237
1321
  *
1238
1322
  * @param[in] session Session
1239
1323
  * @param[in] track The track
1240
1324
  *
1241
- * @return True if track is available for playback, otherwise false.
1325
+ * @return Availability status, see ::sp_track_availability
1242
1326
  *
1243
- * @note The track must be loaded or this function will always return false.
1327
+ * @note The track must be loaded or this function will always SP_TRACK_AVAILABILITY_UNAVAILABLE
1244
1328
  * @see sp_track_is_loaded()
1245
1329
  */
1246
- SP_LIBEXPORT(bool) sp_track_is_available(sp_session *session, sp_track *track);
1330
+ SP_LIBEXPORT(sp_track_availability) sp_track_get_availability(sp_session *session, sp_track *track);
1247
1331
 
1248
1332
  /**
1249
1333
  * Return true if the track is a local file.
@@ -1271,6 +1355,24 @@ SP_LIBEXPORT(bool) sp_track_is_local(sp_session *session, sp_track *track);
1271
1355
  */
1272
1356
  SP_LIBEXPORT(bool) sp_track_is_autolinked(sp_session *session, sp_track *track);
1273
1357
 
1358
+ /**
1359
+ * Return true if the track is a placeholder. Placeholder tracks are used
1360
+ * to store other objects than tracks in the playlist. Currently this is
1361
+ * used in the inbox to store artists, albums and playlists.
1362
+ *
1363
+ * Use sp_link_create_from_track() to get a link object that points
1364
+ * to the real object this "track" points to.
1365
+ *
1366
+ * @param[in] track The track
1367
+ *
1368
+ * @return True if track is a placeholder
1369
+ *
1370
+ * @note Contrary to most functions the track does not have to be
1371
+ * loaded for this function to return correct value
1372
+ */
1373
+ SP_LIBEXPORT(bool) sp_track_is_placeholder(sp_track *track);
1374
+
1375
+
1274
1376
  /**
1275
1377
  * Return true if the track is starred by the currently logged in user.
1276
1378
  *
@@ -1544,6 +1646,17 @@ SP_LIBEXPORT(const char *) sp_artist_name(sp_artist *artist);
1544
1646
  */
1545
1647
  SP_LIBEXPORT(bool) sp_artist_is_loaded(sp_artist *artist);
1546
1648
 
1649
+ /**
1650
+ * Return portrait for artist
1651
+ *
1652
+ * @param[in] artist The artist object
1653
+ *
1654
+ * @return ID byte sequence that can be passed to sp_image_create()
1655
+ * If the album has no image or the metadata for the album is not
1656
+ * loaded yet, this function returns NULL.
1657
+ *
1658
+ */
1659
+ SP_LIBEXPORT(const byte *) sp_artist_portrait(sp_artist *artist);
1547
1660
 
1548
1661
  /**
1549
1662
  * Increase the reference count of a artist
@@ -1693,6 +1806,16 @@ SP_LIBEXPORT(sp_track *) sp_albumbrowse_track(sp_albumbrowse *alb, int index);
1693
1806
  */
1694
1807
  SP_LIBEXPORT(const char *) sp_albumbrowse_review(sp_albumbrowse *alb);
1695
1808
 
1809
+ /**
1810
+ * Return the time (in ms) that was spent waiting for the Spotify backend to serve the request
1811
+ *
1812
+ * @param[in] alb Album browse object
1813
+ *
1814
+ * @return -1 if the request was served from the local cache
1815
+ * If the result is not yet loaded the return value is undefined
1816
+ */
1817
+ SP_LIBEXPORT(int) sp_albumbrowse_backend_request_duration(sp_albumbrowse *alb);
1818
+
1696
1819
 
1697
1820
  /**
1698
1821
  * Increase the reference count of an album browse result
@@ -1742,6 +1865,7 @@ typedef void SP_CALLCONV artistbrowse_complete_cb(sp_artistbrowse *result, void
1742
1865
  *
1743
1866
  * @param[in] session Session object
1744
1867
  * @param[in] artist Artist to be browsed. The artist metadata does not have to be loaded
1868
+ * @param[in] type Type of data requested, see the sp_artistbrowse_type enum for details
1745
1869
  * @param[in] callback Callback to be invoked when browsing has been completed. Pass NULL if you are not interested in this event.
1746
1870
  * @param[in] userdata Userdata passed to callback.
1747
1871
  *
@@ -1749,7 +1873,7 @@ typedef void SP_CALLCONV artistbrowse_complete_cb(sp_artistbrowse *result, void
1749
1873
  *
1750
1874
  * @see ::artistbrowse_complete_cb
1751
1875
  */
1752
- SP_LIBEXPORT(sp_artistbrowse *) sp_artistbrowse_create(sp_session *session, sp_artist *artist, artistbrowse_complete_cb *callback, void *userdata);
1876
+ SP_LIBEXPORT(sp_artistbrowse *) sp_artistbrowse_create(sp_session *session, sp_artist *artist, sp_artistbrowse_type type, artistbrowse_complete_cb *callback, void *userdata);
1753
1877
 
1754
1878
  /**
1755
1879
  * Check if an artist browse request is completed
@@ -1878,6 +2002,16 @@ SP_LIBEXPORT(sp_artist *) sp_artistbrowse_similar_artist(sp_artistbrowse *arb, i
1878
2002
  */
1879
2003
  SP_LIBEXPORT(const char *) sp_artistbrowse_biography(sp_artistbrowse *arb);
1880
2004
 
2005
+ /**
2006
+ * Return the time (in ms) that was spent waiting for the Spotify backend to serve the request
2007
+ *
2008
+ * @param[in] arb Artist browse object
2009
+ *
2010
+ * @return -1 if the request was served from the local cache
2011
+ * If the result is not yet loaded the return value is undefined
2012
+ */
2013
+ SP_LIBEXPORT(int) sp_artistbrowse_backend_request_duration(sp_artistbrowse *arb);
2014
+
1881
2015
 
1882
2016
  /**
1883
2017
  * Increase the reference count of an artist browse result
@@ -3141,33 +3275,7 @@ SP_LIBEXPORT(const char *) sp_user_display_name(sp_user *user);
3141
3275
  */
3142
3276
  SP_LIBEXPORT(bool) sp_user_is_loaded(sp_user *user);
3143
3277
 
3144
- /**
3145
- * Get a pointer to a string representing the user's full name as returned from social networks.
3146
- *
3147
- * @param[in] user The Spotify user whose displayable username you would like a string representation of
3148
- *
3149
- * @return A string, NULL if the full name is not known.
3150
- */
3151
- SP_LIBEXPORT(const char *) sp_user_full_name(sp_user *user);
3152
-
3153
- /**
3154
- * Get a pointer to an URL for an picture representing the user
3155
- *
3156
- * @param[in] user The Spotify user whose displayable username you would like a string representation of
3157
- *
3158
- * @return A string, NULL if the URL is not known.
3159
- */
3160
- SP_LIBEXPORT(const char *) sp_user_picture(sp_user *user);
3161
-
3162
- /**
3163
- * Get relation type for a given user
3164
- *
3165
- * @param[in] session Session
3166
- * @param[in] user The Spotify user you want to query relation type for
3167
- *
3168
- * @return ::sp_relation_type
3169
- */
3170
- SP_LIBEXPORT(sp_relation_type) sp_user_relation_type(sp_session *session, sp_user *user);
3278
+ //endif
3171
3279
 
3172
3280
  /**
3173
3281
  * Increase the reference count of an user
@@ -3350,6 +3458,16 @@ SP_LIBEXPORT(int) sp_toplistbrowse_num_tracks(sp_toplistbrowse *tlb);
3350
3458
  */
3351
3459
  SP_LIBEXPORT(sp_track *) sp_toplistbrowse_track(sp_toplistbrowse *tlb, int index);
3352
3460
 
3461
+ /**
3462
+ * Return the time (in ms) that was spent waiting for the Spotify backend to serve the request
3463
+ *
3464
+ * @param[in] tlb Toplist object
3465
+ *
3466
+ * @return -1 if the request was served from the local cache
3467
+ * If the result is not yet loaded the return value is undefined
3468
+ */
3469
+ SP_LIBEXPORT(int) sp_toplistbrowse_backend_request_duration(sp_toplistbrowse *tlb);
3470
+
3353
3471
 
3354
3472
  /** @} */
3355
3473
 
@@ -3426,6 +3544,7 @@ SP_LIBEXPORT(void) sp_inbox_release(sp_inbox *inbox);
3426
3544
  */
3427
3545
  SP_LIBEXPORT(const char *) sp_build_id(void);
3428
3546
 
3547
+ //endif
3429
3548
 
3430
3549
  #ifdef __cplusplus
3431
3550
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.1.0
4
+ version: 10.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-02 00:00:00.000000000Z
12
+ date: 2011-11-01 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
16
- requirement: &2153532820 !ruby/object:Gem::Requirement
16
+ requirement: &2160952820 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153532820
24
+ version_requirements: *2160952820
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yard
27
- requirement: &2153532100 !ruby/object:Gem::Requirement
27
+ requirement: &2160952400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2153532100
35
+ version_requirements: *2160952400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rbgccxml
38
- requirement: &2153531500 !ruby/object:Gem::Requirement
38
+ requirement: &2160951940 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2153531500
46
+ version_requirements: *2160951940
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: gccxml_gem
49
- requirement: &2153530920 !ruby/object:Gem::Requirement
49
+ requirement: &2160951440 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '!='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153530920
57
+ version_requirements: *2160951440
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: minitest
60
- requirement: &2153530280 !ruby/object:Gem::Requirement
60
+ requirement: &2160950940 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '2.0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153530280
68
+ version_requirements: *2160950940
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &2153529780 !ruby/object:Gem::Requirement
71
+ requirement: &2160950480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '1.0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2153529780
79
+ version_requirements: *2160950480
80
80
  description:
81
81
  email:
82
82
  - kim@burgestrand.se
@@ -125,3 +125,4 @@ summary: Bare-bones Ruby bindings for libspotify
125
125
  test_files:
126
126
  - spec/api.h
127
127
  - spec/spotify_spec.rb
128
+ has_rdoc: