spotify 11.0.2 → 12.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/spotify.rb CHANGED
@@ -109,6 +109,8 @@ module Spotify
109
109
  typedef :pointer, :userdata
110
110
  typedef :pointer, :array
111
111
 
112
+ typedef :pointer, :string_pointer
113
+
112
114
  typedef UTF8String, :utf8_string
113
115
  typedef ImageID, :image_id
114
116
 
@@ -118,24 +120,25 @@ module Spotify
118
120
  # @see http://developer.spotify.com/en/libspotify/docs/group__error.html
119
121
 
120
122
  #
121
- enum :error, [:ok, :bad_api_version, :api_initialization_failed,
122
- :track_not_playable, :resource_not_loaded,
123
- :bad_application_key, :bad_username_or_password,
124
- :user_banned, :unable_to_contact_server,
125
- :client_too_old, :other_permanent, :bad_user_agent,
126
- :missing_callback, :invalid_indata,
127
- :index_out_of_range, :user_needs_premium,
128
- :other_transient, :is_loading, :no_stream_available,
129
- :permission_denied, :inbox_is_full, :no_cache,
130
- :no_such_user, :no_credentials,
123
+ enum :error, [:ok, 0,
124
+ :bad_api_version, :api_initialization_failed, :track_not_playable,
125
+
126
+ :bad_application_key, 5,
127
+ :bad_username_or_password, :user_banned,
128
+ :unable_to_contact_server, :client_too_old, :other_permanent,
129
+ :bad_user_agent, :missing_callback, :invalid_indata,
130
+ :index_out_of_range, :user_needs_premium, :other_transient,
131
+ :is_loading, :no_stream_available, :permission_denied,
132
+ :inbox_is_full, :no_cache, :no_such_user, :no_credentials,
133
+ :network_disabled, :invalid_device_id, :cant_open_trace_file,
134
+ :application_banned,
131
135
 
132
- :network_disabled, :invalid_device_id,
133
- :cant_open_trace_file, :application_banned,
136
+ :offline_too_many_tracks, 31,
137
+ :offline_disk_cache, :offline_expired, :offline_not_allowed,
138
+ :offline_license_lost, :offline_license_error,
134
139
 
135
- :offline_too_many_tracks, 31,
136
- :offline_disk_cache, :offline_expired,
137
- :offline_not_allowed, :offline_license_lost,
138
- :offline_license_error]
140
+ :lastfm_auth_error, 39,
141
+ :invalid_argument, :system_failure]
139
142
 
140
143
  # @macro [attach] attach_function
141
144
  #
@@ -221,7 +224,10 @@ module Spotify
221
224
  :get_audio_buffer_stats, callback([ :session, AudioBufferStats ], :void),
222
225
  :offline_status_updated, callback([ :session ], :void),
223
226
  :offline_error, callback([ :session, :error ], :void),
224
- :credentials_blob_updated, callback([ :session, :string ], :void)
227
+ :credentials_blob_updated, callback([ :session, :string ], :void),
228
+ :connectionstate_updated, callback([ :session ], :void),
229
+ :scrobble_error, callback([ :session, :error ], :void),
230
+ :private_session_mode_changed, callback([ :session, :bool ], :void)
225
231
  end
226
232
 
227
233
  # FFI::Struct for Session configuration.
@@ -237,18 +243,21 @@ module Spotify
237
243
  # @attr [Fixnum] initially_unload_playlists
238
244
  class SessionConfig < FFI::Struct
239
245
  layout :api_version, :int,
240
- :cache_location, :pointer,
241
- :settings_location, :pointer,
246
+ :cache_location, :string_pointer,
247
+ :settings_location, :string_pointer,
242
248
  :application_key, :pointer,
243
249
  :application_key_size, :size_t,
244
- :user_agent, :pointer,
250
+ :user_agent, :string_pointer,
245
251
  :callbacks, SessionCallbacks.by_ref,
246
252
  :userdata, :userdata,
247
253
  :compress_playlists, :bool,
248
254
  :dont_save_metadata_for_playlists, :bool,
249
255
  :initially_unload_playlists, :bool,
250
- :device_id, :pointer,
251
- :tracefile, :pointer
256
+ :device_id, :string_pointer,
257
+ :proxy, :string_pointer,
258
+ :proxy_username, :string_pointer,
259
+ :proxy_password, :string_pointer,
260
+ :tracefile, :string_pointer
252
261
  end
253
262
 
254
263
  # FFI::Struct for Offline Sync Status
@@ -274,6 +283,12 @@ module Spotify
274
283
  :syncing, :bool
275
284
  end
276
285
 
286
+ #
287
+ enum :social_provider, [:spotify, :facebook, :lastfm]
288
+
289
+ #
290
+ enum :scrobbling_state, [:use_global_setting, :local_enabled, :local_disabled, :global_enabled, :global_disabled]
291
+
277
292
  #
278
293
  enum :connectionstate, [:logged_out, :logged_in, :disconnected, :undefined, :offline]
279
294
 
@@ -287,33 +302,33 @@ module Spotify
287
302
  :allow_sync_over_wifi , 0x8]
288
303
 
289
304
  attach_function :session_create, :sp_session_create, [ SessionConfig, :buffer_out ], :error
290
- attach_function :session_release, :sp_session_release, [ :session ], :void
305
+ attach_function :session_release, :sp_session_release, [ :session ], :error
291
306
 
292
- attach_function :session_process_events, :sp_session_process_events, [ :session, :buffer_out ], :void
293
- attach_function :session_login, :sp_session_login, [ :session, :utf8_string, :string, :bool, :string ], :void
307
+ attach_function :session_process_events, :sp_session_process_events, [ :session, :buffer_out ], :error
308
+ attach_function :session_login, :sp_session_login, [ :session, :utf8_string, :string, :bool, :string ], :error
294
309
  attach_function :session_relogin, :sp_session_relogin, [ :session ], :error
295
- attach_function :session_forget_me, :sp_session_forget_me, [ :session ], :void
310
+ attach_function :session_forget_me, :sp_session_forget_me, [ :session ], :error
296
311
  attach_function :session_remembered_user, :sp_session_remembered_user, [ :session, :buffer_out, :size_t ], :int
297
312
 
298
313
  attach_function :session_user, :sp_session_user, [ :session ], :user
299
- attach_function :session_logout, :sp_session_logout, [ :session ], :void
314
+ attach_function :session_logout, :sp_session_logout, [ :session ], :error
300
315
  attach_function :session_connectionstate, :sp_session_connectionstate, [ :session ], :connectionstate
301
316
  attach_function :session_userdata, :sp_session_userdata, [ :session ], :userdata
302
- attach_function :session_set_cache_size, :sp_session_set_cache_size, [ :session, :size_t ], :void
317
+ attach_function :session_set_cache_size, :sp_session_set_cache_size, [ :session, :size_t ], :error
303
318
  attach_function :session_player_load, :sp_session_player_load, [ :session, :track ], :error
304
- attach_function :session_player_seek, :sp_session_player_seek, [ :session, :int ], :void
305
- attach_function :session_player_play, :sp_session_player_play, [ :session, :bool ], :void
306
- attach_function :session_player_unload, :sp_session_player_unload, [ :session ], :void
319
+ attach_function :session_player_seek, :sp_session_player_seek, [ :session, :int ], :error
320
+ attach_function :session_player_play, :sp_session_player_play, [ :session, :bool ], :error
321
+ attach_function :session_player_unload, :sp_session_player_unload, [ :session ], :error
307
322
  attach_function :session_player_prefetch, :sp_session_player_prefetch, [ :session, :track ], :error
308
323
  attach_function :session_playlistcontainer, :sp_session_playlistcontainer, [ :session ], :playlistcontainer
309
324
  attach_function :session_inbox_create, :sp_session_inbox_create, [ :session ], :playlist
310
325
  attach_function :session_starred_create, :sp_session_starred_create, [ :session ], :playlist
311
326
  attach_function :session_starred_for_user_create, :sp_session_starred_for_user_create, [ :session, :utf8_string ], :playlist
312
327
  attach_function :session_publishedcontainer_for_user_create, :sp_session_publishedcontainer_for_user_create, [ :playlist, :utf8_string ], :playlistcontainer
313
- attach_function :session_preferred_bitrate, :sp_session_preferred_bitrate, [ :session, :bitrate ], :void
328
+ attach_function :session_preferred_bitrate, :sp_session_preferred_bitrate, [ :session, :bitrate ], :error
314
329
 
315
- attach_function :session_set_connection_type, :sp_session_set_connection_type, [ :session, :connection_type ], :void
316
- attach_function :session_set_connection_rules, :sp_session_set_connection_rules, [ :session, :connection_rules ], :void
330
+ attach_function :session_set_connection_type, :sp_session_set_connection_type, [ :session, :connection_type ], :error
331
+ attach_function :session_set_connection_rules, :sp_session_set_connection_rules, [ :session, :connection_rules ], :error
317
332
 
318
333
  attach_function :offline_tracks_to_sync, :sp_offline_tracks_to_sync, [ :session ], :int
319
334
  attach_function :offline_num_playlists, :sp_offline_num_playlists, [ :session ], :int
@@ -321,12 +336,44 @@ module Spotify
321
336
  attach_function :offline_time_left, :sp_offline_time_left, [ :session ], :int
322
337
 
323
338
  attach_function :session_user_country, :sp_session_user_country, [ :session ], :int
324
- attach_function :session_preferred_offline_bitrate, :sp_session_preferred_offline_bitrate, [ :session, :bitrate, :bool ], :void
339
+ attach_function :session_preferred_offline_bitrate, :sp_session_preferred_offline_bitrate, [ :session, :bitrate, :bool ], :error
325
340
 
326
- attach_function :session_set_volume_normalization, :sp_session_set_volume_normalization, [ :session, :bool ], :void
341
+ attach_function :session_set_volume_normalization, :sp_session_set_volume_normalization, [ :session, :bool ], :error
327
342
  attach_function :session_get_volume_normalization, :sp_session_get_volume_normalization, [ :session ], :bool
328
343
 
329
- attach_function :session_flush_caches, :sp_session_flush_caches, [ :session ], :void
344
+ attach_function :session_flush_caches, :sp_session_flush_caches, [ :session ], :error
345
+ attach_function :session_user_name, :sp_session_user_name, [ :session ], :string
346
+
347
+ attach_function :session_set_private_session, :sp_session_set_private_session, [ :session, :bool ], :error
348
+ attach_function :session_is_private_session, :sp_session_is_private_session, [ :session ], :bool
349
+ attach_function :session_set_scrobbling, :sp_session_set_scrobbling, [ :session, :social_provider, :scrobbling_state ], :error
350
+ attach_function :session_is_scrobbling, :sp_session_is_scrobbling, [ :session, :social_provider, :buffer_out ], :error
351
+ attach_function :session_is_scrobbling_possible, :sp_session_is_scrobbling_possible, [ :session, :social_provider, :buffer_out ], :error
352
+ attach_function :session_set_social_credentials, :sp_session_set_social_credentials, [ :session, :social_provider, :utf8_string, :string ], :error
353
+
354
+ #
355
+ # Images
356
+ #
357
+ # @see http://developer.spotify.com/en/libspotify/docs/group__image.html
358
+
359
+ #
360
+ enum :imageformat, [:unknown, -1, :jpeg]
361
+ enum :image_size, [ :normal, :small, :large ]
362
+
363
+ callback :image_loaded_cb, [ :image, :userdata ], :void
364
+ attach_function :image_create, :sp_image_create, [ :session, :image_id ], :image
365
+ attach_function :image_add_load_callback, :sp_image_add_load_callback, [ :image, :image_loaded_cb, :userdata ], :error
366
+ attach_function :image_remove_load_callback, :sp_image_remove_load_callback, [ :image, :image_loaded_cb, :userdata ], :error
367
+ attach_function :image_is_loaded, :sp_image_is_loaded, [ :image ], :bool
368
+ attach_function :image_error, :sp_image_error, [ :image ], :error
369
+ attach_function :image_format, :sp_image_format, [ :image ], :imageformat
370
+ attach_function :image_data, :sp_image_data, [ :image, :buffer_out ], :pointer
371
+ attach_function :image_image_id, :sp_image_image_id, [ :image ], :image_id
372
+ attach_function :image_create_from_link, :sp_image_create_from_link, [ :session, :link ], :image
373
+
374
+ attach_function :image_add_ref, :sp_image_add_ref, [ :image ], :error
375
+ attach_function :image_release, :sp_image_release, [ :image ], :error
376
+
330
377
 
331
378
  #
332
379
  # Link
@@ -343,9 +390,9 @@ module Spotify
343
390
  attach_function :link_create_from_artist, :sp_link_create_from_artist, [ :artist ], :link
344
391
  attach_function :link_create_from_search, :sp_link_create_from_search, [ :search ], :link
345
392
  attach_function :link_create_from_playlist, :sp_link_create_from_playlist, [ :playlist ], :link
346
- attach_function :link_create_from_artist_portrait, :sp_link_create_from_artist_portrait, [ :artist ], :link
393
+ attach_function :link_create_from_artist_portrait, :sp_link_create_from_artist_portrait, [ :artist, :image_size ], :link
347
394
  attach_function :link_create_from_artistbrowse_portrait, :sp_link_create_from_artistbrowse_portrait, [ :artistbrowse, :int ], :link
348
- attach_function :link_create_from_album_cover, :sp_link_create_from_album_cover, [ :album ], :link
395
+ attach_function :link_create_from_album_cover, :sp_link_create_from_album_cover, [ :album, :image_size ], :link
349
396
  attach_function :link_create_from_image, :sp_link_create_from_image, [ :image ], :link
350
397
  attach_function :link_create_from_user, :sp_link_create_from_user, [ :user ], :link
351
398
  attach_function :link_as_string, :sp_link_as_string, [ :link, :buffer_out, :int ], :int
@@ -356,8 +403,8 @@ module Spotify
356
403
  attach_function :link_as_artist, :sp_link_as_artist, [ :link ], :artist
357
404
  attach_function :link_as_user, :sp_link_as_user, [ :link ], :user
358
405
 
359
- attach_function :link_add_ref, :sp_link_add_ref, [ :link ], :void
360
- attach_function :link_release, :sp_link_release, [ :link ], :void
406
+ attach_function :link_add_ref, :sp_link_add_ref, [ :link ], :error
407
+ attach_function :link_release, :sp_link_release, [ :link ], :error
361
408
 
362
409
  #
363
410
  # Tracks
@@ -376,7 +423,7 @@ module Spotify
376
423
  attach_function :track_is_local, :sp_track_is_local, [ :session, :track ], :bool
377
424
  attach_function :track_is_autolinked, :sp_track_is_autolinked, [ :session, :track ], :bool
378
425
  attach_function :track_is_starred, :sp_track_is_starred, [ :session, :track ], :bool
379
- attach_function :track_set_starred, :sp_track_set_starred, [ :session, :array, :int, :bool ], :void
426
+ attach_function :track_set_starred, :sp_track_set_starred, [ :session, :array, :int, :bool ], :error
380
427
  attach_function :track_num_artists, :sp_track_num_artists, [ :track ], :int
381
428
  attach_function :track_artist, :sp_track_artist, [ :track, :int ], :artist
382
429
  attach_function :track_album, :sp_track_album, [ :track ], :album
@@ -392,8 +439,8 @@ module Spotify
392
439
 
393
440
  attach_function :localtrack_create, :sp_localtrack_create, [ :utf8_string, :utf8_string, :utf8_string, :int ], :track
394
441
 
395
- attach_function :track_add_ref, :sp_track_add_ref, [ :track ], :void
396
- attach_function :track_release, :sp_track_release, [ :track ], :void
442
+ attach_function :track_add_ref, :sp_track_add_ref, [ :track ], :error
443
+ attach_function :track_release, :sp_track_release, [ :track ], :error
397
444
 
398
445
  #
399
446
  # Albums
@@ -406,13 +453,13 @@ module Spotify
406
453
  attach_function :album_is_loaded, :sp_album_is_loaded, [ :album ], :bool
407
454
  attach_function :album_is_available, :sp_album_is_available, [ :album ], :bool
408
455
  attach_function :album_artist, :sp_album_artist, [ :album ], :artist
409
- attach_function :album_cover, :sp_album_cover, [ :album ], :image_id
456
+ attach_function :album_cover, :sp_album_cover, [ :album, :image_size ], :image_id
410
457
  attach_function :album_name, :sp_album_name, [ :album ], :utf8_string
411
458
  attach_function :album_year, :sp_album_year, [ :album ], :int
412
459
  attach_function :album_type, :sp_album_type, [ :album ], :albumtype
413
460
 
414
- attach_function :album_add_ref, :sp_album_add_ref, [ :album ], :void
415
- attach_function :album_release, :sp_album_release, [ :album ], :void
461
+ attach_function :album_add_ref, :sp_album_add_ref, [ :album ], :error
462
+ attach_function :album_release, :sp_album_release, [ :album ], :error
416
463
 
417
464
  #
418
465
  # Album Browser
@@ -433,8 +480,8 @@ module Spotify
433
480
  attach_function :albumbrowse_review, :sp_albumbrowse_review, [ :albumbrowse ], :utf8_string
434
481
  attach_function :albumbrowse_backend_request_duration, :sp_albumbrowse_backend_request_duration, [ :albumbrowse ], :int
435
482
 
436
- attach_function :albumbrowse_add_ref, :sp_albumbrowse_add_ref, [ :albumbrowse ], :void
437
- attach_function :albumbrowse_release, :sp_albumbrowse_release, [ :albumbrowse ], :void
483
+ attach_function :albumbrowse_add_ref, :sp_albumbrowse_add_ref, [ :albumbrowse ], :error
484
+ attach_function :albumbrowse_release, :sp_albumbrowse_release, [ :albumbrowse ], :error
438
485
 
439
486
  #
440
487
  # Artists
@@ -444,10 +491,10 @@ module Spotify
444
491
  #
445
492
  attach_function :artist_name, :sp_artist_name, [ :artist ], :utf8_string
446
493
  attach_function :artist_is_loaded, :sp_artist_is_loaded, [ :artist ], :bool
447
- attach_function :artist_portrait, :sp_artist_portrait, [ :artist ], :image_id
494
+ attach_function :artist_portrait, :sp_artist_portrait, [ :artist, :image_size ], :image_id
448
495
 
449
- attach_function :artist_add_ref, :sp_artist_add_ref, [ :artist ], :void
450
- attach_function :artist_release, :sp_artist_release, [ :artist ], :void
496
+ attach_function :artist_add_ref, :sp_artist_add_ref, [ :artist ], :error
497
+ attach_function :artist_release, :sp_artist_release, [ :artist ], :error
451
498
 
452
499
  #
453
500
  # Artist Browsing
@@ -475,30 +522,8 @@ module Spotify
475
522
  attach_function :artistbrowse_num_tophit_tracks, :sp_artistbrowse_num_tophit_tracks, [ :artistbrowse ], :int
476
523
  attach_function :artistbrowse_tophit_track, :sp_artistbrowse_tophit_track, [ :artistbrowse, :int ], :track
477
524
 
478
- attach_function :artistbrowse_add_ref, :sp_artistbrowse_add_ref, [ :artistbrowse ], :void
479
- attach_function :artistbrowse_release, :sp_artistbrowse_release, [ :artistbrowse ], :void
480
-
481
- #
482
- # Images
483
- #
484
- # @see http://developer.spotify.com/en/libspotify/docs/group__image.html
485
-
486
- #
487
- enum :imageformat, [:unknown, -1, :jpeg]
488
-
489
- callback :image_loaded_cb, [ :image, :userdata ], :void
490
- attach_function :image_create, :sp_image_create, [ :session, :image_id ], :image
491
- attach_function :image_add_load_callback, :sp_image_add_load_callback, [ :image, :image_loaded_cb, :userdata ], :void
492
- attach_function :image_remove_load_callback, :sp_image_remove_load_callback, [ :image, :image_loaded_cb, :userdata ], :void
493
- attach_function :image_is_loaded, :sp_image_is_loaded, [ :image ], :bool
494
- attach_function :image_error, :sp_image_error, [ :image ], :error
495
- attach_function :image_format, :sp_image_format, [ :image ], :imageformat
496
- attach_function :image_data, :sp_image_data, [ :image, :buffer_out ], :pointer
497
- attach_function :image_image_id, :sp_image_image_id, [ :image ], :image_id
498
- attach_function :image_create_from_link, :sp_image_create_from_link, [ :session, :link ], :image
499
-
500
- attach_function :image_add_ref, :sp_image_add_ref, [ :image ], :void
501
- attach_function :image_release, :sp_image_release, [ :image ], :void
525
+ attach_function :artistbrowse_add_ref, :sp_artistbrowse_add_ref, [ :artistbrowse ], :error
526
+ attach_function :artistbrowse_release, :sp_artistbrowse_release, [ :artistbrowse ], :error
502
527
 
503
528
  #
504
529
  # Searching
@@ -528,8 +553,8 @@ module Spotify
528
553
  attach_function :search_total_artists, :sp_search_total_artists, [ :search ], :int
529
554
  attach_function :search_total_playlists, :sp_search_total_playlists, [ :search ], :int
530
555
 
531
- attach_function :search_add_ref, :sp_search_add_ref, [ :search ], :void
532
- attach_function :search_release, :sp_search_release, [ :search ], :void
556
+ attach_function :search_add_ref, :sp_search_add_ref, [ :search ], :error
557
+ attach_function :search_release, :sp_search_release, [ :search ], :error
533
558
 
534
559
  #
535
560
  # Playlists
@@ -596,8 +621,8 @@ module Spotify
596
621
  enum :playlist_offline_status, [:no, :yes, :downloading, :waiting]
597
622
 
598
623
  attach_function :playlist_is_loaded, :sp_playlist_is_loaded, [ :playlist ], :bool
599
- attach_function :playlist_add_callbacks, :sp_playlist_add_callbacks, [ :playlist, PlaylistCallbacks, :userdata ], :void
600
- attach_function :playlist_remove_callbacks, :sp_playlist_remove_callbacks, [ :playlist, PlaylistCallbacks, :userdata ], :void
624
+ attach_function :playlist_add_callbacks, :sp_playlist_add_callbacks, [ :playlist, PlaylistCallbacks, :userdata ], :error
625
+ attach_function :playlist_remove_callbacks, :sp_playlist_remove_callbacks, [ :playlist, PlaylistCallbacks, :userdata ], :error
601
626
  attach_function :playlist_num_tracks, :sp_playlist_num_tracks, [ :playlist ], :int
602
627
  attach_function :playlist_track, :sp_playlist_track, [ :playlist, :int ], :track
603
628
  attach_function :playlist_track_create_time, :sp_playlist_track_create_time, [ :playlist, :int ], :int
@@ -609,8 +634,8 @@ module Spotify
609
634
  attach_function :playlist_rename, :sp_playlist_rename, [ :playlist, :utf8_string ], :error
610
635
  attach_function :playlist_owner, :sp_playlist_owner, [ :playlist ], :user
611
636
  attach_function :playlist_is_collaborative, :sp_playlist_is_collaborative, [ :playlist ], :bool
612
- attach_function :playlist_set_collaborative, :sp_playlist_set_collaborative, [ :playlist, :bool ], :void
613
- attach_function :playlist_set_autolink_tracks, :sp_playlist_set_autolink_tracks, [ :playlist, :bool ], :void
637
+ attach_function :playlist_set_collaborative, :sp_playlist_set_collaborative, [ :playlist, :bool ], :error
638
+ attach_function :playlist_set_autolink_tracks, :sp_playlist_set_autolink_tracks, [ :playlist, :bool ], :error
614
639
  attach_function :playlist_get_description, :sp_playlist_get_description, [ :playlist ], :utf8_string
615
640
  attach_function :playlist_get_image, :sp_playlist_get_image, [ :playlist, :buffer_out ], :bool
616
641
  attach_function :playlist_has_pending_changes, :sp_playlist_has_pending_changes, [ :playlist ], :bool
@@ -619,17 +644,17 @@ module Spotify
619
644
  attach_function :playlist_reorder_tracks, :sp_playlist_reorder_tracks, [ :playlist, :array, :int, :int ], :error
620
645
  attach_function :playlist_num_subscribers, :sp_playlist_num_subscribers, [ :playlist ], :uint
621
646
  attach_function :playlist_subscribers, :sp_playlist_subscribers, [ :playlist ], Subscribers
622
- attach_function :playlist_subscribers_free, :sp_playlist_subscribers_free, [ Subscribers ], :void
623
- attach_function :playlist_update_subscribers, :sp_playlist_update_subscribers, [ :session, :playlist ], :void
647
+ attach_function :playlist_subscribers_free, :sp_playlist_subscribers_free, [ Subscribers ], :error
648
+ attach_function :playlist_update_subscribers, :sp_playlist_update_subscribers, [ :session, :playlist ], :error
624
649
  attach_function :playlist_is_in_ram, :sp_playlist_is_in_ram, [ :session, :playlist ], :bool
625
- attach_function :playlist_set_in_ram, :sp_playlist_set_in_ram, [ :session, :playlist, :bool ], :void
650
+ attach_function :playlist_set_in_ram, :sp_playlist_set_in_ram, [ :session, :playlist, :bool ], :error
626
651
  attach_function :playlist_create, :sp_playlist_create, [ :session, :link ], :playlist
627
652
  attach_function :playlist_get_offline_status, :sp_playlist_get_offline_status, [ :session, :playlist ], :playlist_offline_status
628
653
  attach_function :playlist_get_offline_download_completed, :sp_playlist_get_offline_download_completed, [ :session, :playlist ], :int
629
- attach_function :playlist_set_offline_mode, :sp_playlist_set_offline_mode, [ :session, :playlist, :bool ], :void
654
+ attach_function :playlist_set_offline_mode, :sp_playlist_set_offline_mode, [ :session, :playlist, :bool ], :error
630
655
 
631
- attach_function :playlist_add_ref, :sp_playlist_add_ref, [ :playlist ], :void
632
- attach_function :playlist_release, :sp_playlist_release, [ :playlist ], :void
656
+ attach_function :playlist_add_ref, :sp_playlist_add_ref, [ :playlist ], :error
657
+ attach_function :playlist_release, :sp_playlist_release, [ :playlist ], :error
633
658
 
634
659
  #
635
660
  # Playlist Container
@@ -649,8 +674,8 @@ module Spotify
649
674
  end
650
675
 
651
676
  #
652
- attach_function :playlistcontainer_add_callbacks, :sp_playlistcontainer_add_callbacks, [ :playlistcontainer, PlaylistContainerCallbacks, :userdata ], :void
653
- attach_function :playlistcontainer_remove_callbacks, :sp_playlistcontainer_remove_callbacks, [ :playlistcontainer, PlaylistContainerCallbacks, :userdata ], :void
677
+ attach_function :playlistcontainer_add_callbacks, :sp_playlistcontainer_add_callbacks, [ :playlistcontainer, PlaylistContainerCallbacks, :userdata ], :error
678
+ attach_function :playlistcontainer_remove_callbacks, :sp_playlistcontainer_remove_callbacks, [ :playlistcontainer, PlaylistContainerCallbacks, :userdata ], :error
654
679
  attach_function :playlistcontainer_num_playlists, :sp_playlistcontainer_num_playlists, [ :playlistcontainer ], :int
655
680
  attach_function :playlistcontainer_playlist, :sp_playlistcontainer_playlist, [ :playlistcontainer, :int ], :playlist
656
681
  attach_function :playlistcontainer_playlist_type, :sp_playlistcontainer_playlist_type, [ :playlistcontainer, :int ], :playlist_type
@@ -667,8 +692,8 @@ module Spotify
667
692
  attach_function :playlistcontainer_get_unseen_tracks, :sp_playlistcontainer_get_unseen_tracks, [ :playlistcontainer, :playlist, :array, :int ], :int
668
693
  attach_function :playlistcontainer_clear_unseen_tracks, :sp_playlistcontainer_clear_unseen_tracks, [ :playlistcontainer, :playlist ], :int
669
694
 
670
- attach_function :playlistcontainer_add_ref, :sp_playlistcontainer_add_ref, [ :playlistcontainer ], :void
671
- attach_function :playlistcontainer_release, :sp_playlistcontainer_release, [ :playlistcontainer ], :void
695
+ attach_function :playlistcontainer_add_ref, :sp_playlistcontainer_add_ref, [ :playlistcontainer ], :error
696
+ attach_function :playlistcontainer_release, :sp_playlistcontainer_release, [ :playlistcontainer ], :error
672
697
 
673
698
  #
674
699
  # User handling
@@ -682,8 +707,8 @@ module Spotify
682
707
  attach_function :user_display_name, :sp_user_display_name, [ :user ], :utf8_string
683
708
  attach_function :user_is_loaded, :sp_user_is_loaded, [ :user ], :bool
684
709
 
685
- attach_function :user_add_ref, :sp_user_add_ref, [ :user ], :void
686
- attach_function :user_release, :sp_user_release, [ :user ], :void
710
+ attach_function :user_add_ref, :sp_user_add_ref, [ :user ], :error
711
+ attach_function :user_release, :sp_user_release, [ :user ], :error
687
712
 
688
713
  #
689
714
  # Toplists
@@ -706,8 +731,8 @@ module Spotify
706
731
  attach_function :toplistbrowse_track, :sp_toplistbrowse_track, [ :toplistbrowse, :int ], :track
707
732
  attach_function :toplistbrowse_backend_request_duration, :sp_toplistbrowse_backend_request_duration, [ :toplistbrowse ], :int
708
733
 
709
- attach_function :toplistbrowse_add_ref, :sp_toplistbrowse_add_ref, [ :toplistbrowse ], :void
710
- attach_function :toplistbrowse_release, :sp_toplistbrowse_release, [ :toplistbrowse ], :void
734
+ attach_function :toplistbrowse_add_ref, :sp_toplistbrowse_add_ref, [ :toplistbrowse ], :error
735
+ attach_function :toplistbrowse_release, :sp_toplistbrowse_release, [ :toplistbrowse ], :error
711
736
 
712
737
  #
713
738
  # Inbox
@@ -719,8 +744,8 @@ module Spotify
719
744
  attach_function :inbox_post_tracks, :sp_inbox_post_tracks, [ :session, :utf8_string, :array, :int, :utf8_string, :inboxpost_complete_cb, :userdata ], :inbox
720
745
  attach_function :inbox_error, :sp_inbox_error, [ :inbox ], :error
721
746
 
722
- attach_function :inbox_add_ref, :sp_inbox_add_ref, [ :inbox ], :void
723
- attach_function :inbox_release, :sp_inbox_release, [ :inbox ], :void
747
+ attach_function :inbox_add_ref, :sp_inbox_add_ref, [ :inbox ], :error
748
+ attach_function :inbox_release, :sp_inbox_release, [ :inbox ], :error
724
749
 
725
750
  # Rescue errors thrown when binding to a method that does not exist. Often
726
751
  # this is because of the user using an old version of libspotify, or a new
@@ -1,4 +1,4 @@
1
1
  module Spotify
2
2
  # See README for versioning policy.
3
- VERSION = [11, 0, 2].join('.')
3
+ VERSION = [12, 0, 0].join('.')
4
4
  end
data/spec/api.h CHANGED
@@ -43,7 +43,6 @@ extern "C" {
43
43
  /* Includes */
44
44
  #include <stddef.h>
45
45
 
46
-
47
46
  #ifdef _WIN32
48
47
  typedef unsigned __int64 sp_uint64;
49
48
  #else
@@ -127,6 +126,9 @@ typedef enum sp_error {
127
126
  SP_ERROR_OFFLINE_NOT_ALLOWED = 34, ///< This user is not allowed to use offline mode
128
127
  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
129
128
  SP_ERROR_OFFLINE_LICENSE_ERROR = 36, ///< The Spotify license server does not respond correctly
129
+ SP_ERROR_LASTFM_AUTH_ERROR = 39, ///< A LastFM scrobble authentication error has occurred
130
+ SP_ERROR_INVALID_ARGUMENT = 40, ///< An invalid argument was specified
131
+ SP_ERROR_SYSTEM_FAILURE = 41, ///< An operating system error
130
132
  } sp_error;
131
133
 
132
134
  /**
@@ -160,7 +162,7 @@ SP_LIBEXPORT(const char*) sp_error_message(sp_error error);
160
162
  * returned from sp_session_create(). Future versions of the library will provide you with some kind of mechanism
161
163
  * to request an updated version of the library.
162
164
  */
163
- #define SPOTIFY_API_VERSION 11
165
+ #define SPOTIFY_API_VERSION 12
164
166
 
165
167
  /**
166
168
  * Describes the current state of the connection
@@ -253,6 +255,15 @@ typedef enum sp_track_offline_status {
253
255
  SP_TRACK_OFFLINE_DONE_RESYNC = 7, ///< Downloaded OK and available but scheduled for re-download
254
256
  } sp_track_offline_status;
255
257
 
258
+ /**
259
+ * Image size
260
+ */
261
+ typedef enum sp_image_size {
262
+ SP_IMAGE_SIZE_NORMAL = 0, ///< Normal image size
263
+ SP_IMAGE_SIZE_SMALL = 1, ///< Small image size
264
+ SP_IMAGE_SIZE_LARGE = 2, ///< Large image size
265
+ } sp_image_size;
266
+
256
267
  /**
257
268
  * Buffer stats used by get_audio_buffer_stats callback
258
269
  */
@@ -313,6 +324,20 @@ typedef enum sp_artistbrowse_type {
313
324
  */
314
325
  } sp_artistbrowse_type;
315
326
 
327
+ typedef enum sp_social_provider {
328
+ SP_SOCIAL_PROVIDER_SPOTIFY,
329
+ SP_SOCIAL_PROVIDER_FACEBOOK,
330
+ SP_SOCIAL_PROVIDER_LASTFM,
331
+ } sp_social_provider;
332
+
333
+ typedef enum sp_scrobbling_state {
334
+ SP_SCROBBLING_STATE_USE_GLOBAL_SETTING = 0,
335
+ SP_SCROBBLING_STATE_LOCAL_ENABLED = 1,
336
+ SP_SCROBBLING_STATE_LOCAL_DISABLED = 2,
337
+ SP_SCROBBLING_STATE_GLOBAL_ENABLED = 3,
338
+ SP_SCROBBLING_STATE_GLOBAL_DISABLED = 4,
339
+ } sp_scrobbling_state;
340
+
316
341
 
317
342
  /**
318
343
  * Offline sync status
@@ -588,6 +613,28 @@ typedef struct sp_session_callbacks {
588
613
  */
589
614
  void (SP_CALLCONV *credentials_blob_updated)(sp_session *session, const char *blob);
590
615
 
616
+ /**
617
+ * Called when the connection state has updated - such as when logging in, going offline, etc.
618
+ *
619
+ * @param[in] session Session
620
+ */
621
+ void (SP_CALLCONV *connectionstate_updated)(sp_session *session);
622
+
623
+ /**
624
+ * Called when there is a scrobble error event
625
+ *
626
+ * @param[in] session Session
627
+ * @param[in] error Scrobble error. Currently SP_ERROR_LASTFM_AUTH_ERROR.
628
+ */
629
+ void (SP_CALLCONV *scrobble_error)(sp_session *session, sp_error error);
630
+
631
+ /**
632
+ * Called when there is a change in the private session mode
633
+ *
634
+ * @param[in] session Session
635
+ * @param[in] isPrivate True if in private session, false otherwhise
636
+ */
637
+ void (SP_CALLCONV *private_session_mode_changed)(sp_session *session, bool is_private);
591
638
  } sp_session_callbacks;
592
639
 
593
640
  /**
@@ -639,6 +686,20 @@ typedef struct sp_session_config {
639
686
  */
640
687
  const char *device_id;
641
688
 
689
+ /**
690
+ * Url to the proxy server that should be used.
691
+ * The format is protocol://<host>:port (where protocal is http/https/socks4/socks5)
692
+ */
693
+ const char *proxy;
694
+ /**
695
+ * Username to authenticate with proxy server
696
+ */
697
+ const char *proxy_username;
698
+ /**
699
+ * Password to authenticate with proxy server
700
+ */
701
+ const char *proxy_password;
702
+
642
703
 
643
704
  /**
644
705
  * Path to API trace file
@@ -674,8 +735,10 @@ SP_LIBEXPORT(sp_error) sp_session_create(const sp_session_config *config, sp_ses
674
735
  * Release the session. This will clean up all data and connections associated with the session
675
736
  *
676
737
  * @param[in] sess Session object returned from sp_session_create()
738
+ * @return One of the following errors, from ::sp_error
739
+ * SP_ERROR_OK
677
740
  */
678
- SP_LIBEXPORT(void) sp_session_release(sp_session *sess);
741
+ SP_LIBEXPORT(sp_error) sp_session_release(sp_session *sess);
679
742
 
680
743
 
681
744
  /**
@@ -696,8 +759,10 @@ SP_LIBEXPORT(void) sp_session_release(sp_session *sess);
696
759
  * @param[in] remember_me If set, the username / password will be remembered by libspotify
697
760
  * @param[in] blob If you have received a blob in the #credentials_blob_updated
698
761
  * you can pas this here instead of password
762
+ * @return One of the following errors, from ::sp_error
763
+ * SP_ERROR_OK
699
764
  */
700
- SP_LIBEXPORT(void) sp_session_login(sp_session *session, const char *username, const char *password, bool remember_me, const char *blob);
765
+ SP_LIBEXPORT(sp_error) sp_session_login(sp_session *session, const char *username, const char *password, bool remember_me, const char *blob);
701
766
 
702
767
 
703
768
  /**
@@ -729,13 +794,24 @@ SP_LIBEXPORT(sp_error) sp_session_relogin(sp_session *session);
729
794
  SP_LIBEXPORT(int) sp_session_remembered_user(sp_session *session, char *buffer, size_t buffer_size);
730
795
 
731
796
 
797
+ /**
798
+ * Get a pointer to a string representing the user's login username.
799
+ *
800
+ * @param[in] session Your session object
801
+ *
802
+ * @return A string representing the login username.
803
+ */
804
+ SP_LIBEXPORT(const char *) sp_session_user_name(sp_session *session);
805
+
806
+
732
807
  /**
733
808
  * Remove stored credentials in libspotify. If no credentials are currently stored, nothing will happen.
734
809
  *
735
810
  * @param[in] session Your session object
736
- *
811
+ * @return One of the following errors, from ::sp_error
812
+ * SP_ERROR_OK
737
813
  */
738
- SP_LIBEXPORT(void) sp_session_forget_me(sp_session *session);
814
+ SP_LIBEXPORT(sp_error) sp_session_forget_me(sp_session *session);
739
815
 
740
816
 
741
817
  /**
@@ -754,8 +830,10 @@ SP_LIBEXPORT(sp_user *) sp_session_user(sp_session *session);
754
830
  * logged in. Otherwise, the settings and cache may be lost.
755
831
  *
756
832
  * @param[in] session Your session object
833
+ * @return One of the following errors, from ::sp_error
834
+ * SP_ERROR_OK
757
835
  */
758
- SP_LIBEXPORT(void) sp_session_logout(sp_session *session);
836
+ SP_LIBEXPORT(sp_error) sp_session_logout(sp_session *session);
759
837
 
760
838
 
761
839
  /**
@@ -767,8 +845,10 @@ SP_LIBEXPORT(void) sp_session_logout(sp_session *session);
767
845
  * should never need to be used.
768
846
  *
769
847
  * @param[in] session Your session object
848
+ * @return One of the following errors, from ::sp_error
849
+ * SP_ERROR_OK
770
850
  */
771
- SP_LIBEXPORT(void) sp_session_flush_caches(sp_session *session);
851
+ SP_LIBEXPORT(sp_error) sp_session_flush_caches(sp_session *session);
772
852
 
773
853
  /**
774
854
  * The connection state of the specified session.
@@ -795,16 +875,20 @@ SP_LIBEXPORT(void *) sp_session_userdata(sp_session *session);
795
875
  * @param[in] size Maximum cache size in megabytes.
796
876
  * Setting it to 0 (the default) will let libspotify automatically
797
877
  * resize the cache (10% of disk free space)
878
+ * @return One of the following errors, from ::sp_error
879
+ * SP_ERROR_OK
798
880
  */
799
- SP_LIBEXPORT(void) sp_session_set_cache_size(sp_session *session, size_t size);
881
+ SP_LIBEXPORT(sp_error) sp_session_set_cache_size(sp_session *session, size_t size);
800
882
 
801
883
  /**
802
884
  * Make the specified session process any pending events
803
885
  *
804
886
  * @param[in] session Your session object
805
887
  * @param[out] next_timeout Stores the time (in milliseconds) until you should call this function again
888
+ * @return One of the following errors, from ::sp_error
889
+ * SP_ERROR_OK
806
890
  */
807
- SP_LIBEXPORT(void) sp_session_process_events(sp_session *session, int *next_timeout);
891
+ SP_LIBEXPORT(sp_error) sp_session_process_events(sp_session *session, int *next_timeout);
808
892
 
809
893
  /**
810
894
  * Loads the specified track
@@ -819,7 +903,6 @@ SP_LIBEXPORT(void) sp_session_process_events(sp_session *session, int *next_time
819
903
  * @return One of the following errors, from ::sp_error
820
904
  * SP_ERROR_OK
821
905
  * SP_ERROR_MISSING_CALLBACK
822
- * SP_ERROR_RESOURCE_NOT_LOADED
823
906
  * SP_ERROR_TRACK_NOT_PLAYABLE
824
907
  *
825
908
  */
@@ -830,18 +913,20 @@ SP_LIBEXPORT(sp_error) sp_session_player_load(sp_session *session, sp_track *tra
830
913
  *
831
914
  * @param[in] session Your session object
832
915
  * @param[in] offset Track position, in milliseconds.
833
- *
916
+ * @return One of the following errors, from ::sp_error
917
+ * SP_ERROR_OK
834
918
  */
835
- SP_LIBEXPORT(void) sp_session_player_seek(sp_session *session, int offset);
919
+ SP_LIBEXPORT(sp_error) sp_session_player_seek(sp_session *session, int offset);
836
920
 
837
921
  /**
838
922
  * Play or pause the currently loaded track
839
923
  *
840
924
  * @param[in] session Your session object
841
925
  * @param[in] play If set to true, playback will occur. If set to false, the playback will be paused.
842
- *
926
+ * @return One of the following errors, from ::sp_error
927
+ * SP_ERROR_OK
843
928
  */
844
- SP_LIBEXPORT(void) sp_session_player_play(sp_session *session, bool play);
929
+ SP_LIBEXPORT(sp_error) sp_session_player_play(sp_session *session, bool play);
845
930
 
846
931
  /**
847
932
  * Stops the currently playing track
@@ -850,9 +935,10 @@ SP_LIBEXPORT(void) sp_session_player_play(sp_session *session, bool play);
850
935
  * playing track.
851
936
  *
852
937
  * @param[in] session Your session object
853
- *
938
+ * @return One of the following errors, from ::sp_error
939
+ * SP_ERROR_OK
854
940
  */
855
- SP_LIBEXPORT(void) sp_session_player_unload(sp_session *session);
941
+ SP_LIBEXPORT(sp_error) sp_session_player_unload(sp_session *session);
856
942
 
857
943
  /**
858
944
  * Prefetch a track
@@ -935,9 +1021,11 @@ SP_LIBEXPORT(sp_playlistcontainer *) sp_session_publishedcontainer_for_user_crea
935
1021
  *
936
1022
  * @param[in] session Session object
937
1023
  * @param[in] bitrate Preferred bitrate, see ::sp_bitrate for possible values
938
- *
1024
+ * @return One of the following errors, from ::sp_error
1025
+ * SP_ERROR_OK
1026
+ * SP_ERROR_INVALID_ARGUMENT
939
1027
  */
940
- SP_LIBEXPORT(void) sp_session_preferred_bitrate(sp_session *session, sp_bitrate bitrate);
1028
+ SP_LIBEXPORT(sp_error) sp_session_preferred_bitrate(sp_session *session, sp_bitrate bitrate);
941
1029
 
942
1030
 
943
1031
  /**
@@ -946,9 +1034,11 @@ SP_LIBEXPORT(void) sp_session_preferred_bitrate(sp_session *session, sp_bitrate
946
1034
  * @param[in] session Session object
947
1035
  * @param[in] bitrate Preferred bitrate, see ::sp_bitrate for possible values
948
1036
  * @param[in] allow_resync Set to true if libspotify should resynchronize already synchronized tracks. Usually you should set this to false.
949
- *
1037
+ * @return One of the following errors, from ::sp_error
1038
+ * SP_ERROR_OK
1039
+ * SP_ERROR_INVALID_ARGUMENT
950
1040
  */
951
- SP_LIBEXPORT(void) sp_session_preferred_offline_bitrate(sp_session *session, sp_bitrate bitrate, bool allow_resync);
1041
+ SP_LIBEXPORT(sp_error) sp_session_preferred_offline_bitrate(sp_session *session, sp_bitrate bitrate, bool allow_resync);
952
1042
 
953
1043
 
954
1044
  /**
@@ -967,10 +1057,95 @@ SP_LIBEXPORT(bool) sp_session_get_volume_normalization(sp_session *session);
967
1057
  *
968
1058
  * @param[in] session Session object
969
1059
  * @param[in] on True iff volume normalization should be enabled
1060
+ * @return One of the following errors, from ::sp_error
1061
+ * SP_ERROR_OK
1062
+ */
1063
+ SP_LIBEXPORT(sp_error) sp_session_set_volume_normalization(sp_session *session, bool on);
1064
+
1065
+
1066
+ /**
1067
+ * Set if private session is enabled. This disables sharing what the user is listening to
1068
+ * to services such as Spotify Social, Facebook and LastFM. The private session will
1069
+ * last for a time, and then libspotify will revert to the normal state. The private
1070
+ * session is prolonged by user activity.
1071
+ *
1072
+ * @param[in] session Session object
1073
+ * @param[in] enabled True iff private session should be enabled
1074
+ * @return One of the following errors, from ::sp_error
1075
+ * SP_ERROR_OK
1076
+ */
1077
+ SP_LIBEXPORT(sp_error) sp_session_set_private_session(sp_session *session, bool enabled);
1078
+
1079
+ /**
1080
+ * Return True if private session is enabled
1081
+ *
1082
+ * @param[in] session Session object
1083
+ *
1084
+ * @return True if private session is enabled
1085
+ */
1086
+ SP_LIBEXPORT(bool) sp_session_is_private_session(sp_session *session);
1087
+
1088
+ /**
1089
+ * Set if scrobbling is enabled. This api allows setting local overrides of the global scrobbling settings.
1090
+ * Changing the global settings are currently not supported.
1091
+ *
1092
+ * @param[in] session Session object
1093
+ * @param[in] provider The scrobbling provider referred to
1094
+ * @param[in] state The state to set the provider to
1095
+ *
1096
+ * @return error code
1097
+ *
1098
+ * @see sp_social_provider
1099
+ * @see sp_scrobbling_state
1100
+ */
1101
+ SP_LIBEXPORT(sp_error) sp_session_set_scrobbling(sp_session *session, sp_social_provider provider, sp_scrobbling_state state);
1102
+
1103
+ /**
1104
+ * Return the scrobbling state. This makes it possible to find out if scrobbling is locally overrided or
1105
+ * if the global setting is used.
1106
+ *
1107
+ * @param[in] session Session object
1108
+ * @param[in] provider The scrobbling provider referred to
1109
+ * @param[out] state The output variable receiving the sp_scrobbling_state state
970
1110
  *
1111
+ * @return error code
971
1112
  */
972
- SP_LIBEXPORT(void) sp_session_set_volume_normalization(sp_session *session, bool on);
1113
+ SP_LIBEXPORT(sp_error) sp_session_is_scrobbling(sp_session *session, sp_social_provider provider, sp_scrobbling_state* state);
973
1114
 
1115
+ /**
1116
+ * Return True if scrobbling settings should be shown to the user. Currently this setting is relevant
1117
+ * only to the facebook provider.
1118
+ * The returned value may be false if the user is not connected to facebook,
1119
+ * or if the user has opted out from facebook social graph.
1120
+ *
1121
+ * @param[in] session Session object
1122
+ * @param[in] provider The scrobbling provider referred to
1123
+ * @param[out] out True iff scrobbling is possible
1124
+ *
1125
+ * @return error code
1126
+ */
1127
+ SP_LIBEXPORT(sp_error) sp_session_is_scrobbling_possible(sp_session *session, sp_social_provider provider, bool* out);
1128
+
1129
+ /**
1130
+ * Set the user's credentials with a social provider.
1131
+ * Currently this is only relevant for LastFm
1132
+ * Call sp_session_set_scrobbling to force an authentication attempt
1133
+ * with the LastFm server. If authentication fails a scrobble_error callback will be
1134
+ * sent.
1135
+ *
1136
+ * @param[in] session Session object
1137
+ * @param[in] provider The scrobbling provider referred to
1138
+ * @param[in] username The user name
1139
+ * @param[in] password The password
1140
+ *
1141
+ * @return error code
1142
+
1143
+ * @see sp_session_set_scrobbling
1144
+ * @see sp_session_callbacks#scrobble_error
1145
+ * @return One of the following errors, from ::sp_error
1146
+ * SP_ERROR_OK
1147
+ */
1148
+ SP_LIBEXPORT(sp_error) sp_session_set_social_credentials(sp_session *session, sp_social_provider provider, const char* username, const char* password);
974
1149
 
975
1150
  /**
976
1151
  * Set to true if the connection is currently routed over a roamed connectivity
@@ -982,8 +1157,10 @@ SP_LIBEXPORT(void) sp_session_set_volume_normalization(sp_session *session, bool
982
1157
  * how libspotify should behave in respect to network activity and offline
983
1158
  * synchronization.
984
1159
  * @see sp_connection_type
1160
+ * @return One of the following errors, from ::sp_error
1161
+ * SP_ERROR_OK
985
1162
  */
986
- SP_LIBEXPORT(void) sp_session_set_connection_type(sp_session *session, sp_connection_type type);
1163
+ SP_LIBEXPORT(sp_error) sp_session_set_connection_type(sp_session *session, sp_connection_type type);
987
1164
 
988
1165
 
989
1166
  /**
@@ -996,8 +1173,10 @@ SP_LIBEXPORT(void) sp_session_set_connection_type(sp_session *session, sp_connec
996
1173
  * how libspotify should behave in respect to network activity and offline
997
1174
  * synchronization.
998
1175
  * @see sp_connection_rules
1176
+ * @return One of the following errors, from ::sp_error
1177
+ * SP_ERROR_OK
999
1178
  */
1000
- SP_LIBEXPORT(void) sp_session_set_connection_rules(sp_session *session, sp_connection_rules rules);
1179
+ SP_LIBEXPORT(sp_error) sp_session_set_connection_rules(sp_session *session, sp_connection_rules rules);
1001
1180
 
1002
1181
 
1003
1182
 
@@ -1124,13 +1303,14 @@ SP_LIBEXPORT(sp_link *) sp_link_create_from_album(sp_album *album);
1124
1303
  * Create an image link object from an album
1125
1304
  *
1126
1305
  * @param[in] album An album object
1306
+ * @param[in] size The desired size of the image
1127
1307
  *
1128
1308
  * @return A link representing the album cover. Type is set to SP_LINKTYPE_IMAGE
1129
1309
  *
1130
1310
  * @note You need to release the link when you are done with it.
1131
1311
  * @see sp_link_release()
1132
1312
  */
1133
- SP_LIBEXPORT(sp_link *) sp_link_create_from_album_cover(sp_album *album);
1313
+ SP_LIBEXPORT(sp_link *) sp_link_create_from_album_cover(sp_album *album, sp_image_size size);
1134
1314
 
1135
1315
  /**
1136
1316
  * Creates a link object from an artist
@@ -1148,6 +1328,7 @@ SP_LIBEXPORT(sp_link *) sp_link_create_from_artist(sp_artist *artist);
1148
1328
  * Creates a link object pointing to an artist portrait
1149
1329
  *
1150
1330
  * @param[in] artist Artist browse object
1331
+ * @param[in] size The desired size of the image
1151
1332
  *
1152
1333
  * @return A link object representing an image
1153
1334
  *
@@ -1155,7 +1336,7 @@ SP_LIBEXPORT(sp_link *) sp_link_create_from_artist(sp_artist *artist);
1155
1336
  * @see sp_link_release()
1156
1337
  * @see sp_artistbrowse_num_portraits()
1157
1338
  */
1158
- SP_LIBEXPORT(sp_link *) sp_link_create_from_artist_portrait(sp_artist *artist);
1339
+ SP_LIBEXPORT(sp_link *) sp_link_create_from_artist_portrait(sp_artist *artist, sp_image_size size);
1159
1340
 
1160
1341
 
1161
1342
  /**
@@ -1311,15 +1492,19 @@ SP_LIBEXPORT(sp_user *) sp_link_as_user(sp_link *link);
1311
1492
  * Increase the reference count of a link
1312
1493
  *
1313
1494
  * @param[in] link The link object
1495
+ * @return One of the following errors, from ::sp_error
1496
+ * SP_ERROR_OK
1314
1497
  */
1315
- SP_LIBEXPORT(void) sp_link_add_ref(sp_link *link);
1498
+ SP_LIBEXPORT(sp_error) sp_link_add_ref(sp_link *link);
1316
1499
 
1317
1500
  /**
1318
1501
  * Decrease the reference count of a link
1319
1502
  *
1320
1503
  * @param[in] link The link object
1504
+ * @return One of the following errors, from ::sp_error
1505
+ * SP_ERROR_OK
1321
1506
  */
1322
- SP_LIBEXPORT(void) sp_link_release(sp_link *link);
1507
+ SP_LIBEXPORT(sp_error) sp_link_release(sp_link *link);
1323
1508
 
1324
1509
  /** @} */
1325
1510
 
@@ -1458,7 +1643,7 @@ SP_LIBEXPORT(bool) sp_track_is_starred(sp_session *session, sp_track *track);
1458
1643
  * @note This will fail silently if playlists are disabled.
1459
1644
  * @see sp_set_playlists_enabled()
1460
1645
  */
1461
- SP_LIBEXPORT(void) sp_track_set_starred(sp_session *session, sp_track *const*tracks, int num_tracks, bool star);
1646
+ SP_LIBEXPORT(sp_error) sp_track_set_starred(sp_session *session, sp_track *const*tracks, int num_tracks, bool star);
1462
1647
 
1463
1648
  /**
1464
1649
  * The number of artists performing on the specified track
@@ -1561,15 +1746,19 @@ SP_LIBEXPORT(sp_track *) sp_localtrack_create(const char *artist, const char *ti
1561
1746
  * Increase the reference count of a track
1562
1747
  *
1563
1748
  * @param[in] track The track object
1749
+ * @return One of the following errors, from ::sp_error
1750
+ * SP_ERROR_OK
1564
1751
  */
1565
- SP_LIBEXPORT(void) sp_track_add_ref(sp_track *track);
1752
+ SP_LIBEXPORT(sp_error) sp_track_add_ref(sp_track *track);
1566
1753
 
1567
1754
  /**
1568
1755
  * Decrease the reference count of a track
1569
1756
  *
1570
1757
  * @param[in] track The track object
1758
+ * @return One of the following errors, from ::sp_error
1759
+ * SP_ERROR_OK
1571
1760
  */
1572
- SP_LIBEXPORT(void) sp_track_release(sp_track *track);
1761
+ SP_LIBEXPORT(sp_error) sp_track_release(sp_track *track);
1573
1762
 
1574
1763
  /** @} */
1575
1764
 
@@ -1623,6 +1812,7 @@ SP_LIBEXPORT(sp_artist *) sp_album_artist(sp_album *album);
1623
1812
  * Return image ID representing the album's coverart.
1624
1813
  *
1625
1814
  * @param[in] album Album object
1815
+ * @param[in] size The desired size of the image
1626
1816
  *
1627
1817
  * @return ID byte sequence that can be passed to sp_image_create()
1628
1818
  * If the album has no image or the metadata for the album is not
@@ -1630,7 +1820,7 @@ SP_LIBEXPORT(sp_artist *) sp_album_artist(sp_album *album);
1630
1820
  *
1631
1821
  * @see sp_image_create
1632
1822
  */
1633
- SP_LIBEXPORT(const byte *) sp_album_cover(sp_album *album);
1823
+ SP_LIBEXPORT(const byte *) sp_album_cover(sp_album *album, sp_image_size size);
1634
1824
 
1635
1825
  /**
1636
1826
  * Return name of album
@@ -1667,15 +1857,19 @@ SP_LIBEXPORT(sp_albumtype) sp_album_type(sp_album *album);
1667
1857
  * Increase the reference count of an album
1668
1858
  *
1669
1859
  * @param[in] album The album object
1860
+ * @return One of the following errors, from ::sp_error
1861
+ * SP_ERROR_OK
1670
1862
  */
1671
- SP_LIBEXPORT(void) sp_album_add_ref(sp_album *album);
1863
+ SP_LIBEXPORT(sp_error) sp_album_add_ref(sp_album *album);
1672
1864
 
1673
1865
  /**
1674
1866
  * Decrease the reference count of an album
1675
1867
  *
1676
1868
  * @param[in] album The album object
1869
+ * @return One of the following errors, from ::sp_error
1870
+ * SP_ERROR_OK
1677
1871
  */
1678
- SP_LIBEXPORT(void) sp_album_release(sp_album *album);
1872
+ SP_LIBEXPORT(sp_error) sp_album_release(sp_album *album);
1679
1873
 
1680
1874
  /** @} */
1681
1875
 
@@ -1710,28 +1904,33 @@ SP_LIBEXPORT(bool) sp_artist_is_loaded(sp_artist *artist);
1710
1904
  /**
1711
1905
  * Return portrait for artist
1712
1906
  *
1713
- * @param[in] artist The artist object
1907
+ * @param[in] artist The artist object
1908
+ * @param[in] size The desired size of the image
1714
1909
  *
1715
1910
  * @return ID byte sequence that can be passed to sp_image_create()
1716
1911
  * If the artist has no image or the metadata for the album is not
1717
1912
  * loaded yet, this function returns NULL.
1718
1913
  *
1719
1914
  */
1720
- SP_LIBEXPORT(const byte *) sp_artist_portrait(sp_artist *artist);
1915
+ SP_LIBEXPORT(const byte *) sp_artist_portrait(sp_artist *artist, sp_image_size size);
1721
1916
 
1722
1917
  /**
1723
1918
  * Increase the reference count of a artist
1724
1919
  *
1725
1920
  * @param[in] artist The artist object
1921
+ * @return One of the following errors, from ::sp_error
1922
+ * SP_ERROR_OK
1726
1923
  */
1727
- SP_LIBEXPORT(void) sp_artist_add_ref(sp_artist *artist);
1924
+ SP_LIBEXPORT(sp_error) sp_artist_add_ref(sp_artist *artist);
1728
1925
 
1729
1926
  /**
1730
1927
  * Decrease the reference count of a artist
1731
1928
  *
1732
1929
  * @param[in] artist The artist object
1930
+ * @return One of the following errors, from ::sp_error
1931
+ * SP_ERROR_OK
1733
1932
  */
1734
- SP_LIBEXPORT(void) sp_artist_release(sp_artist *artist);
1933
+ SP_LIBEXPORT(sp_error) sp_artist_release(sp_artist *artist);
1735
1934
 
1736
1935
  /** @} */
1737
1936
 
@@ -1882,15 +2081,19 @@ SP_LIBEXPORT(int) sp_albumbrowse_backend_request_duration(sp_albumbrowse *alb);
1882
2081
  * Increase the reference count of an album browse result
1883
2082
  *
1884
2083
  * @param[in] alb The album browse result object
2084
+ * @return One of the following errors, from ::sp_error
2085
+ * SP_ERROR_OK
1885
2086
  */
1886
- SP_LIBEXPORT(void) sp_albumbrowse_add_ref(sp_albumbrowse *alb);
2087
+ SP_LIBEXPORT(sp_error) sp_albumbrowse_add_ref(sp_albumbrowse *alb);
1887
2088
 
1888
2089
  /**
1889
2090
  * Decrease the reference count of an album browse result
1890
2091
  *
1891
2092
  * @param[in] alb The album browse result object
2093
+ * @return One of the following errors, from ::sp_error
2094
+ * SP_ERROR_OK
1892
2095
  */
1893
- SP_LIBEXPORT(void) sp_albumbrowse_release(sp_albumbrowse *alb);
2096
+ SP_LIBEXPORT(sp_error) sp_albumbrowse_release(sp_albumbrowse *alb);
1894
2097
 
1895
2098
  /** @} */
1896
2099
 
@@ -2102,15 +2305,19 @@ SP_LIBEXPORT(int) sp_artistbrowse_backend_request_duration(sp_artistbrowse *arb)
2102
2305
  * Increase the reference count of an artist browse result
2103
2306
  *
2104
2307
  * @param[in] arb The artist browse result object
2308
+ * @return One of the following errors, from ::sp_error
2309
+ * SP_ERROR_OK
2105
2310
  */
2106
- SP_LIBEXPORT(void) sp_artistbrowse_add_ref(sp_artistbrowse *arb);
2311
+ SP_LIBEXPORT(sp_error) sp_artistbrowse_add_ref(sp_artistbrowse *arb);
2107
2312
 
2108
2313
  /**
2109
2314
  * Decrease the reference count of an artist browse result
2110
2315
  *
2111
2316
  * @param[in] arb The artist browse result object
2317
+ * @return One of the following errors, from ::sp_error
2318
+ * SP_ERROR_OK
2112
2319
  */
2113
- SP_LIBEXPORT(void) sp_artistbrowse_release(sp_artistbrowse *arb);
2320
+ SP_LIBEXPORT(sp_error) sp_artistbrowse_release(sp_artistbrowse *arb);
2114
2321
 
2115
2322
  /** @} */
2116
2323
 
@@ -2174,7 +2381,7 @@ SP_LIBEXPORT(sp_image *) sp_image_create_from_link(sp_session *session, sp_link
2174
2381
  * @param[in] userdata Opaque pointer passed to \p callback
2175
2382
  *
2176
2383
  */
2177
- SP_LIBEXPORT(void) sp_image_add_load_callback(sp_image *image, image_loaded_cb *callback, void *userdata);
2384
+ SP_LIBEXPORT(sp_error) sp_image_add_load_callback(sp_image *image, image_loaded_cb *callback, void *userdata);
2178
2385
 
2179
2386
  /**
2180
2387
  * Remove an image load callback previously added with sp_image_add_load_callback()
@@ -2183,9 +2390,10 @@ SP_LIBEXPORT(void) sp_image_add_load_callback(sp_image *image, image_loaded_cb *
2183
2390
  * @param[in] callback Callback that will not be called when image has been
2184
2391
  * fetched.
2185
2392
  * @param[in] userdata Opaque pointer passed to \p callback
2186
- *
2393
+ * @return One of the following errors, from ::sp_error
2394
+ * SP_ERROR_OK
2187
2395
  */
2188
- SP_LIBEXPORT(void) sp_image_remove_load_callback(sp_image *image, image_loaded_cb *callback, void *userdata);
2396
+ SP_LIBEXPORT(sp_error) sp_image_remove_load_callback(sp_image *image, image_loaded_cb *callback, void *userdata);
2189
2397
 
2190
2398
  /**
2191
2399
  * Check if an image is loaded. Before the image is loaded, the rest of the
@@ -2244,15 +2452,19 @@ SP_LIBEXPORT(const byte *) sp_image_image_id(sp_image *image);
2244
2452
  * Increase the reference count of an image
2245
2453
  *
2246
2454
  * @param[in] image The image object
2455
+ * @return One of the following errors, from ::sp_error
2456
+ * SP_ERROR_OK
2247
2457
  */
2248
- SP_LIBEXPORT(void) sp_image_add_ref(sp_image *image);
2458
+ SP_LIBEXPORT(sp_error) sp_image_add_ref(sp_image *image);
2249
2459
 
2250
2460
  /**
2251
2461
  * Decrease the reference count of an image
2252
2462
  *
2253
2463
  * @param[in] image The image object
2464
+ * @return One of the following errors, from ::sp_error
2465
+ * SP_ERROR_OK
2254
2466
  */
2255
- SP_LIBEXPORT(void) sp_image_release(sp_image *image);
2467
+ SP_LIBEXPORT(sp_error) sp_image_release(sp_image *image);
2256
2468
 
2257
2469
  /** @} */
2258
2470
 
@@ -2480,15 +2692,19 @@ SP_LIBEXPORT(int) sp_search_total_playlists(sp_search *search);
2480
2692
  * Increase the reference count of a search result
2481
2693
  *
2482
2694
  * @param[in] search The search result object
2695
+ * @return One of the following errors, from ::sp_error
2696
+ * SP_ERROR_OK
2483
2697
  */
2484
- SP_LIBEXPORT(void) sp_search_add_ref(sp_search *search);
2698
+ SP_LIBEXPORT(sp_error) sp_search_add_ref(sp_search *search);
2485
2699
 
2486
2700
  /**
2487
2701
  * Decrease the reference count of a search result
2488
2702
  *
2489
2703
  * @param[in] search The search result object
2704
+ * @return One of the following errors, from ::sp_error
2705
+ * SP_ERROR_OK
2490
2706
  */
2491
- SP_LIBEXPORT(void) sp_search_release(sp_search *search);
2707
+ SP_LIBEXPORT(sp_error) sp_search_release(sp_search *search);
2492
2708
 
2493
2709
  /** @} */
2494
2710
 
@@ -2678,7 +2894,7 @@ SP_LIBEXPORT(bool) sp_playlist_is_loaded(sp_playlist *playlist);
2678
2894
  * @sa sp_playlist_remove_callbacks
2679
2895
  *
2680
2896
  */
2681
- SP_LIBEXPORT(void) sp_playlist_add_callbacks(sp_playlist *playlist, sp_playlist_callbacks *callbacks, void *userdata);
2897
+ SP_LIBEXPORT(sp_error) sp_playlist_add_callbacks(sp_playlist *playlist, sp_playlist_callbacks *callbacks, void *userdata);
2682
2898
 
2683
2899
  /**
2684
2900
  * Unregister interest in the given playlist
@@ -2693,9 +2909,11 @@ SP_LIBEXPORT(void) sp_playlist_add_callbacks(sp_playlist *playlist, sp_playlist_
2693
2909
  * @param[in] callbacks Callbacks, see #sp_playlist_callbacks
2694
2910
  * @param[in] userdata Userdata to be passed to callbacks
2695
2911
  * @sa sp_playlist_add_callbacks
2912
+ * @return One of the following errors, from ::sp_error
2913
+ * SP_ERROR_OK
2696
2914
  *
2697
2915
  */
2698
- SP_LIBEXPORT(void) sp_playlist_remove_callbacks(sp_playlist *playlist, sp_playlist_callbacks *callbacks, void *userdata);
2916
+ SP_LIBEXPORT(sp_error) sp_playlist_remove_callbacks(sp_playlist *playlist, sp_playlist_callbacks *callbacks, void *userdata);
2699
2917
 
2700
2918
  /**
2701
2919
  * Return number of tracks in the given playlist
@@ -2819,9 +3037,10 @@ SP_LIBEXPORT(bool) sp_playlist_is_collaborative(sp_playlist *playlist);
2819
3037
  *
2820
3038
  * @param[in] playlist Playlist object
2821
3039
  * @param[in] collaborative True or false
2822
- *
3040
+ * @return One of the following errors, from ::sp_error
3041
+ * SP_ERROR_OK
2823
3042
  */
2824
- SP_LIBEXPORT(void) sp_playlist_set_collaborative(sp_playlist *playlist, bool collaborative);
3043
+ SP_LIBEXPORT(sp_error) sp_playlist_set_collaborative(sp_playlist *playlist, bool collaborative);
2825
3044
 
2826
3045
  /**
2827
3046
  * Set autolinking state for a playlist.
@@ -2831,9 +3050,10 @@ SP_LIBEXPORT(void) sp_playlist_set_collaborative(sp_playlist *playlist, bool col
2831
3050
  *
2832
3051
  * @param[in] playlist Playlist object
2833
3052
  * @param[in] link True or false
2834
- *
3053
+ * @return One of the following errors, from ::sp_error
3054
+ * SP_ERROR_OK
2835
3055
  */
2836
- SP_LIBEXPORT(void) sp_playlist_set_autolink_tracks(sp_playlist *playlist, bool link);
3056
+ SP_LIBEXPORT(sp_error) sp_playlist_set_autolink_tracks(sp_playlist *playlist, bool link);
2837
3057
 
2838
3058
 
2839
3059
  /**
@@ -2948,8 +3168,10 @@ SP_LIBEXPORT(sp_subscribers *) sp_playlist_subscribers(sp_playlist *playlist);
2948
3168
  * Free object returned from sp_playlist_subscribers()
2949
3169
  *
2950
3170
  * @param[in] subscribers Subscribers object
3171
+ * @return One of the following errors, from ::sp_error
3172
+ * SP_ERROR_OK
2951
3173
  */
2952
- SP_LIBEXPORT(void) sp_playlist_subscribers_free(sp_subscribers *subscribers);
3174
+ SP_LIBEXPORT(sp_error) sp_playlist_subscribers_free(sp_subscribers *subscribers);
2953
3175
 
2954
3176
  /**
2955
3177
  * Ask library to update the subscription count for a playlist
@@ -2963,8 +3185,10 @@ SP_LIBEXPORT(void) sp_playlist_subscribers_free(sp_subscribers *subscribers);
2963
3185
  *
2964
3186
  * @param[in] session Session object
2965
3187
  * @param[in] playlist Playlist object
3188
+ * @return One of the following errors, from ::sp_error
3189
+ * SP_ERROR_OK
2966
3190
  */
2967
- SP_LIBEXPORT(void) sp_playlist_update_subscribers(sp_session *session, sp_playlist *playlist);
3191
+ SP_LIBEXPORT(sp_error) sp_playlist_update_subscribers(sp_session *session, sp_playlist *playlist);
2968
3192
 
2969
3193
  /**
2970
3194
  * Return whether a playlist is loaded in RAM (as opposed to only
@@ -3004,8 +3228,10 @@ SP_LIBEXPORT(bool) sp_playlist_is_in_ram(sp_session *session, sp_playlist *playl
3004
3228
  * @param[in] session Session object
3005
3229
  * @param[in] playlist Playlist object
3006
3230
  * @param[in] in_ram Controls whether or not to keep the list in RAM
3231
+ * @return One of the following errors, from ::sp_error
3232
+ * SP_ERROR_OK
3007
3233
  */
3008
- SP_LIBEXPORT(void) sp_playlist_set_in_ram(sp_session *session, sp_playlist *playlist, bool in_ram);
3234
+ SP_LIBEXPORT(sp_error) sp_playlist_set_in_ram(sp_session *session, sp_playlist *playlist, bool in_ram);
3009
3235
 
3010
3236
  /**
3011
3237
  * Load an already existing playlist without adding it to a playlistcontainer.
@@ -3025,8 +3251,10 @@ SP_LIBEXPORT(sp_playlist *) sp_playlist_create(sp_session *session, sp_link *lin
3025
3251
  * @param[in] session Session object
3026
3252
  * @param[in] playlist Playlist object
3027
3253
  * @param[in] offline True iff playlist should be offline, false otherwise
3254
+ * @return One of the following errors, from ::sp_error
3255
+ * SP_ERROR_OK
3028
3256
  */
3029
- SP_LIBEXPORT(void) sp_playlist_set_offline_mode(sp_session *session, sp_playlist *playlist, bool offline);
3257
+ SP_LIBEXPORT(sp_error) sp_playlist_set_offline_mode(sp_session *session, sp_playlist *playlist, bool offline);
3030
3258
 
3031
3259
  /**
3032
3260
  * Get offline status for a playlist
@@ -3059,15 +3287,19 @@ SP_LIBEXPORT(int) sp_playlist_get_offline_download_completed(sp_session *session
3059
3287
  * Increase the reference count of a playlist
3060
3288
  *
3061
3289
  * @param[in] playlist The playlist object
3290
+ * @return One of the following errors, from ::sp_error
3291
+ * SP_ERROR_OK
3062
3292
  */
3063
- SP_LIBEXPORT(void) sp_playlist_add_ref(sp_playlist *playlist);
3293
+ SP_LIBEXPORT(sp_error) sp_playlist_add_ref(sp_playlist *playlist);
3064
3294
 
3065
3295
  /**
3066
3296
  * Decrease the reference count of a playlist
3067
3297
  *
3068
3298
  * @param[in] playlist The playlist object
3299
+ * @return One of the following errors, from ::sp_error
3300
+ * SP_ERROR_OK
3069
3301
  */
3070
- SP_LIBEXPORT(void) sp_playlist_release(sp_playlist *playlist);
3302
+ SP_LIBEXPORT(sp_error) sp_playlist_release(sp_playlist *playlist);
3071
3303
 
3072
3304
 
3073
3305
  /**
@@ -3135,8 +3367,10 @@ typedef struct sp_playlistcontainer_callbacks {
3135
3367
  *
3136
3368
  * @sa sp_session_playlistcontainer()
3137
3369
  * @sa sp_playlistcontainer_remove_callbacks
3370
+ * @return One of the following errors, from ::sp_error
3371
+ * SP_ERROR_OK
3138
3372
  */
3139
- SP_LIBEXPORT(void) sp_playlistcontainer_add_callbacks(sp_playlistcontainer *pc, sp_playlistcontainer_callbacks *callbacks, void *userdata);
3373
+ SP_LIBEXPORT(sp_error) sp_playlistcontainer_add_callbacks(sp_playlistcontainer *pc, sp_playlistcontainer_callbacks *callbacks, void *userdata);
3140
3374
 
3141
3375
 
3142
3376
  /**
@@ -3148,8 +3382,10 @@ SP_LIBEXPORT(void) sp_playlistcontainer_add_callbacks(sp_playlistcontainer *pc,
3148
3382
  *
3149
3383
  * @sa sp_session_playlistcontainer()
3150
3384
  * @sa sp_playlistcontainer_add_callbacks
3385
+ * @return One of the following errors, from ::sp_error
3386
+ * SP_ERROR_OK
3151
3387
  */
3152
- SP_LIBEXPORT(void) sp_playlistcontainer_remove_callbacks(sp_playlistcontainer *pc, sp_playlistcontainer_callbacks *callbacks, void *userdata);
3388
+ SP_LIBEXPORT(sp_error) sp_playlistcontainer_remove_callbacks(sp_playlistcontainer *pc, sp_playlistcontainer_callbacks *callbacks, void *userdata);
3153
3389
 
3154
3390
  /**
3155
3391
  * Return the number of playlists in the given playlist container
@@ -3312,15 +3548,19 @@ SP_LIBEXPORT(sp_user *) sp_playlistcontainer_owner(sp_playlistcontainer *pc);
3312
3548
  * Increase reference count on playlistconatiner object
3313
3549
  *
3314
3550
  * @param[in] pc Playlist container.
3551
+ * @return One of the following errors, from ::sp_error
3552
+ * SP_ERROR_OK
3315
3553
  */
3316
- SP_LIBEXPORT(void) sp_playlistcontainer_add_ref(sp_playlistcontainer *pc);
3554
+ SP_LIBEXPORT(sp_error) sp_playlistcontainer_add_ref(sp_playlistcontainer *pc);
3317
3555
 
3318
3556
  /**
3319
3557
  * Release reference count on playlistconatiner object
3320
3558
  *
3321
3559
  * @param[in] pc Playlist container.
3560
+ * @return One of the following errors, from ::sp_error
3561
+ * SP_ERROR_OK
3322
3562
  */
3323
- SP_LIBEXPORT(void) sp_playlistcontainer_release(sp_playlistcontainer *pc);
3563
+ SP_LIBEXPORT(sp_error) sp_playlistcontainer_release(sp_playlistcontainer *pc);
3324
3564
 
3325
3565
  /**
3326
3566
  * Get the number of new tracks in a playlist since the corresponding
@@ -3403,15 +3643,19 @@ SP_LIBEXPORT(bool) sp_user_is_loaded(sp_user *user);
3403
3643
  * Increase the reference count of an user
3404
3644
  *
3405
3645
  * @param[in] user The user object
3646
+ * @return One of the following errors, from ::sp_error
3647
+ * SP_ERROR_OK
3406
3648
  */
3407
- SP_LIBEXPORT(void) sp_user_add_ref(sp_user *user);
3649
+ SP_LIBEXPORT(sp_error) sp_user_add_ref(sp_user *user);
3408
3650
 
3409
3651
  /**
3410
3652
  * Decrease the reference count of an user
3411
3653
  *
3412
3654
  * @param[in] user The user object
3655
+ * @return One of the following errors, from ::sp_error
3656
+ * SP_ERROR_OK
3413
3657
  */
3414
- SP_LIBEXPORT(void) sp_user_release(sp_user *user);
3658
+ SP_LIBEXPORT(sp_error) sp_user_release(sp_user *user);
3415
3659
 
3416
3660
  /** @} */
3417
3661
 
@@ -3509,15 +3753,19 @@ SP_LIBEXPORT(sp_error) sp_toplistbrowse_error(sp_toplistbrowse *tlb);
3509
3753
  * Increase the reference count of an toplist browse result
3510
3754
  *
3511
3755
  * @param[in] tlb The toplist browse result object
3756
+ * @return One of the following errors, from ::sp_error
3757
+ * SP_ERROR_OK
3512
3758
  */
3513
- SP_LIBEXPORT(void) sp_toplistbrowse_add_ref(sp_toplistbrowse *tlb);
3759
+ SP_LIBEXPORT(sp_error) sp_toplistbrowse_add_ref(sp_toplistbrowse *tlb);
3514
3760
 
3515
3761
  /**
3516
3762
  * Decrease the reference count of an toplist browse result
3517
3763
  *
3518
3764
  * @param[in] tlb The toplist browse result object
3765
+ * @return One of the following errors, from ::sp_error
3766
+ * SP_ERROR_OK
3519
3767
  */
3520
- SP_LIBEXPORT(void) sp_toplistbrowse_release(sp_toplistbrowse *tlb);
3768
+ SP_LIBEXPORT(sp_error) sp_toplistbrowse_release(sp_toplistbrowse *tlb);
3521
3769
 
3522
3770
  /**
3523
3771
  * Given an toplist browse object, return number of artists
@@ -3646,15 +3894,19 @@ SP_LIBEXPORT(sp_error) sp_inbox_error(sp_inbox *inbox);
3646
3894
  * Increase the reference count of a inbox result
3647
3895
  *
3648
3896
  * @param[in] inbox The inbox result object
3897
+ * @return One of the following errors, from ::sp_error
3898
+ * SP_ERROR_OK
3649
3899
  */
3650
- SP_LIBEXPORT(void) sp_inbox_add_ref(sp_inbox *inbox);
3900
+ SP_LIBEXPORT(sp_error) sp_inbox_add_ref(sp_inbox *inbox);
3651
3901
 
3652
3902
  /**
3653
3903
  * Decrease the reference count of a inbox result
3654
3904
  *
3655
3905
  * @param[in] inbox The inbox result object
3906
+ * @return One of the following errors, from ::sp_error
3907
+ * SP_ERROR_OK
3656
3908
  */
3657
- SP_LIBEXPORT(void) sp_inbox_release(sp_inbox *inbox);
3909
+ SP_LIBEXPORT(sp_error) sp_inbox_release(sp_inbox *inbox);
3658
3910
 
3659
3911
  /** @} */
3660
3912