spotify 11.0.2 → 12.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.
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