spotify 8.0.2 → 8.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/spotify.rb +371 -322
- data/lib/spotify/version.rb +2 -1
- data/spec/spotify_spec.rb +85 -22
- data/spotify.gemspec +4 -5
- metadata +56 -76
- data/.yardopts +0 -1
- data/lib/yard-ffi-plugin.rb +0 -44
data/lib/spotify.rb
CHANGED
@@ -12,10 +12,49 @@ module Spotify
|
|
12
12
|
extend FFI::Library
|
13
13
|
ffi_lib ['libspotify', '/Library/Frameworks/libspotify.framework/libspotify']
|
14
14
|
|
15
|
+
# Data converter for boolean struct fields.
|
16
|
+
#
|
17
|
+
# @see https://github.com/ffi/ffi/issues/114
|
18
|
+
module Bool
|
19
|
+
extend FFI::DataConverter
|
20
|
+
native_type FFI::Type::UCHAR
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def to_native(value, ctx)
|
24
|
+
value == true ? 1 : 0
|
25
|
+
end
|
26
|
+
|
27
|
+
def from_native(value, ctx)
|
28
|
+
(value & 1) != 0
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
# libspotify API version
|
16
34
|
# @return [Fixnum]
|
17
35
|
API_VERSION = VERSION.split('.').first.to_i
|
18
36
|
|
37
|
+
# Aliases to Spotify types
|
38
|
+
typedef :pointer, :frames
|
39
|
+
typedef :pointer, :session
|
40
|
+
typedef :pointer, :track
|
41
|
+
typedef :pointer, :user
|
42
|
+
typedef :pointer, :playlistcontainer
|
43
|
+
typedef :pointer, :playlist
|
44
|
+
typedef :pointer, :link
|
45
|
+
typedef :pointer, :album
|
46
|
+
typedef :pointer, :artist
|
47
|
+
typedef :pointer, :search
|
48
|
+
typedef :pointer, :image
|
49
|
+
typedef :pointer, :albumbrowse
|
50
|
+
typedef :pointer, :artistbrowse
|
51
|
+
typedef :pointer, :toplistbrowse
|
52
|
+
typedef :pointer, :inbox
|
53
|
+
|
54
|
+
typedef :pointer, :userdata
|
55
|
+
typedef :pointer, :image_id
|
56
|
+
typedef :pointer, :array
|
57
|
+
|
19
58
|
#
|
20
59
|
# Error
|
21
60
|
#
|
@@ -33,6 +72,12 @@ module Spotify
|
|
33
72
|
:permission_denied, :inbox_is_full, :no_cache,
|
34
73
|
:no_such_user]
|
35
74
|
|
75
|
+
# @macro [attach] attach_function
|
76
|
+
#
|
77
|
+
# Calls +$2+. See source for actual parameters.
|
78
|
+
#
|
79
|
+
# @method $1($3)
|
80
|
+
# @return [$4]
|
36
81
|
attach_function :error_message, :sp_error_message, [ :error ], :string
|
37
82
|
|
38
83
|
#
|
@@ -69,87 +114,41 @@ module Spotify
|
|
69
114
|
#
|
70
115
|
# @see http://developer.spotify.com/en/libspotify/docs/group__session.html
|
71
116
|
|
72
|
-
#
|
73
|
-
enum :connectionstate, [:logged_out, :logged_in, :disconnected, :undefined]
|
74
|
-
|
75
|
-
#
|
76
|
-
enum :connection_type, [:unknown, :none, :mobile, :mobile_roaming, :wifi, :wired]
|
77
|
-
|
78
|
-
#
|
79
|
-
enum :connection_rules, [:network , 0x1,
|
80
|
-
:network_if_roaming , 0x2,
|
81
|
-
:allow_sync_over_mobile, 0x4,
|
82
|
-
:allow_sync_over_wifi , 0x8]
|
83
|
-
|
84
|
-
attach_function :session_create, :sp_session_create, [ :pointer, :pointer ], :error, :blocking => true
|
85
|
-
attach_function :session_release, :sp_session_release, [ :pointer ], :void
|
86
|
-
|
87
|
-
attach_function :session_process_events, :sp_session_process_events, [ :pointer, :pointer ], :void, :blocking => true
|
88
|
-
attach_function :session_login, :sp_session_login, [ :pointer, :string, :string ], :void, :blocking => true
|
89
|
-
|
90
|
-
attach_function :session_user, :sp_session_user, [ :pointer ], :pointer
|
91
|
-
attach_function :session_logout, :sp_session_logout, [ :pointer ], :void
|
92
|
-
attach_function :session_connectionstate, :sp_session_connectionstate, [ :pointer ], :connectionstate
|
93
|
-
attach_function :session_userdata, :sp_session_userdata, [ :pointer ], :pointer
|
94
|
-
attach_function :session_set_cache_size, :sp_session_set_cache_size, [ :pointer, :size_t ], :void
|
95
|
-
attach_function :session_player_load, :sp_session_player_load, [ :pointer, :pointer ], :error
|
96
|
-
attach_function :session_player_seek, :sp_session_player_seek, [ :pointer, :int ], :void
|
97
|
-
attach_function :session_player_play, :sp_session_player_play, [ :pointer, :bool ], :void
|
98
|
-
attach_function :session_player_unload, :sp_session_player_unload, [ :pointer ], :void
|
99
|
-
attach_function :session_player_prefetch, :sp_session_player_prefetch, [ :pointer, :pointer ], :error
|
100
|
-
attach_function :session_playlistcontainer, :sp_session_playlistcontainer, [ :pointer ], :pointer
|
101
|
-
attach_function :session_inbox_create, :sp_session_inbox_create, [ :pointer ], :pointer
|
102
|
-
attach_function :session_starred_create, :sp_session_starred_create, [ :pointer ], :pointer
|
103
|
-
attach_function :session_starred_for_user_create, :sp_session_starred_for_user_create, [ :pointer, :string ], :pointer
|
104
|
-
attach_function :session_publishedcontainer_for_user_create, :sp_session_publishedcontainer_for_user_create, [ :pointer, :string ], :pointer
|
105
|
-
attach_function :session_preferred_bitrate, :sp_session_preferred_bitrate, [ :pointer, :bitrate ], :void
|
106
|
-
attach_function :session_num_friends, :sp_session_num_friends, [ :pointer ], :int
|
107
|
-
attach_function :session_friend, :sp_session_friend, [ :pointer, :int ], :pointer
|
108
|
-
|
109
|
-
attach_function :session_set_connection_type, :sp_session_set_connection_type, [ :pointer, :pointer ], :void
|
110
|
-
attach_function :session_set_connection_rules, :sp_session_set_connection_rules, [ :pointer, :pointer ], :void
|
111
|
-
attach_function :offline_tracks_to_sync, :sp_offline_tracks_to_sync, [ :pointer ], :int
|
112
|
-
attach_function :offline_num_playlists, :sp_offline_num_playlists, [ :pointer ], :int
|
113
|
-
attach_function :offline_sync_get_status, :sp_offline_sync_get_status, [ :pointer, :pointer ], :void
|
114
|
-
attach_function :session_user_country, :sp_session_user_country, [ :pointer ], :int
|
115
|
-
attach_function :session_preferred_offline_bitrate, :sp_session_preferred_offline_bitrate, [ :pointer, :bitrate, :bool ], :void
|
116
|
-
|
117
|
-
|
118
117
|
# FFI::Struct for Session callbacks.
|
119
118
|
#
|
120
|
-
# @attr [callback(:
|
121
|
-
# @attr [callback(:
|
122
|
-
# @attr [callback(:
|
123
|
-
# @attr [callback(:
|
124
|
-
# @attr [callback(:
|
125
|
-
# @attr [callback(:
|
126
|
-
# @attr [callback(:
|
127
|
-
# @attr [callback(:
|
128
|
-
# @attr [callback(:
|
129
|
-
# @attr [callback(:
|
130
|
-
# @attr [callback(:
|
131
|
-
# @attr [callback(:
|
132
|
-
# @attr [callback(:
|
133
|
-
# @attr [callback(:
|
134
|
-
# @attr [callback(:
|
135
|
-
# @attr [callback(:
|
119
|
+
# @attr [callback(:session, :error):void] logged_in
|
120
|
+
# @attr [callback(:session):void] logged_out
|
121
|
+
# @attr [callback(:session):void] metadata_updated
|
122
|
+
# @attr [callback(:session, :error):void] connection_error
|
123
|
+
# @attr [callback(:session, :string):void] message_to_user
|
124
|
+
# @attr [callback(:session):void] notify_main_thread
|
125
|
+
# @attr [callback(:session, AudioFormat, :frames, :int):int] music_delivery
|
126
|
+
# @attr [callback(:session):void] play_token_lost
|
127
|
+
# @attr [callback(:session, :string):void] log_message
|
128
|
+
# @attr [callback(:session):void] end_of_track
|
129
|
+
# @attr [callback(:session, :error):void] streaming_error
|
130
|
+
# @attr [callback(:session):void] userinfo_updated
|
131
|
+
# @attr [callback(:session):void] start_playback
|
132
|
+
# @attr [callback(:session):void] stop_playback
|
133
|
+
# @attr [callback(:session, AudioBufferStats):void] get_audio_buffer_stats
|
134
|
+
# @attr [callback(:session)::void] offline_status_updated
|
136
135
|
class SessionCallbacks < FFI::Struct
|
137
|
-
layout :logged_in, callback([ :
|
138
|
-
:logged_out, callback([ :
|
139
|
-
:metadata_updated, callback([ :
|
140
|
-
:connection_error, callback([ :
|
141
|
-
:message_to_user, callback([ :
|
142
|
-
:notify_main_thread, callback([ :
|
143
|
-
:music_delivery, callback([ :
|
144
|
-
:play_token_lost, callback([ :
|
145
|
-
:log_message, callback([ :
|
146
|
-
:end_of_track, callback([ :
|
147
|
-
:streaming_error, callback([ :
|
148
|
-
:userinfo_updated, callback([ :
|
149
|
-
:start_playback, callback([ :
|
150
|
-
:stop_playback, callback([ :
|
151
|
-
:get_audio_buffer_stats, callback([ :
|
152
|
-
:offline_status_updated, callback([ :
|
136
|
+
layout :logged_in, callback([ :session, :error ], :void),
|
137
|
+
:logged_out, callback([ :session ], :void),
|
138
|
+
:metadata_updated, callback([ :session ], :void),
|
139
|
+
:connection_error, callback([ :session, :error ], :void),
|
140
|
+
:message_to_user, callback([ :session, :string ], :void),
|
141
|
+
:notify_main_thread, callback([ :session ], :void),
|
142
|
+
:music_delivery, callback([ :session, AudioFormat, :frames, :int ], :int),
|
143
|
+
:play_token_lost, callback([ :session ], :void),
|
144
|
+
:log_message, callback([ :session, :string ], :void),
|
145
|
+
:end_of_track, callback([ :session ], :void),
|
146
|
+
:streaming_error, callback([ :session, :error ], :void),
|
147
|
+
:userinfo_updated, callback([ :session ], :void),
|
148
|
+
:start_playback, callback([ :session ], :void),
|
149
|
+
:stop_playback, callback([ :session ], :void),
|
150
|
+
:get_audio_buffer_stats, callback([ :session, AudioBufferStats ], :void),
|
151
|
+
:offline_status_updated, callback([ :session ], :void)
|
153
152
|
end
|
154
153
|
|
155
154
|
# FFI::Struct for Session configuration.
|
@@ -170,15 +169,15 @@ module Spotify
|
|
170
169
|
:application_key, :pointer,
|
171
170
|
:application_key_size, :size_t,
|
172
171
|
:user_agent, :pointer,
|
173
|
-
:callbacks,
|
174
|
-
:userdata, :
|
175
|
-
:compress_playlists,
|
176
|
-
:dont_save_metadata_for_playlists,
|
177
|
-
:initially_unload_playlists,
|
172
|
+
:callbacks, SessionCallbacks.by_ref,
|
173
|
+
:userdata, :userdata,
|
174
|
+
:compress_playlists, Bool,
|
175
|
+
:dont_save_metadata_for_playlists, Bool,
|
176
|
+
:initially_unload_playlists, Bool
|
178
177
|
end
|
179
|
-
|
178
|
+
|
180
179
|
# FFI::Struct for Offline Sync Status
|
181
|
-
#
|
180
|
+
#
|
182
181
|
# @attr [Fixnum] queued_tracks
|
183
182
|
# @attr [Fixnum] queued_bytes
|
184
183
|
# @attr [Fixnum] done_tracks
|
@@ -197,9 +196,54 @@ module Spotify
|
|
197
196
|
:copied_bytes, :uint64,
|
198
197
|
:willnotcopy_tracks, :int,
|
199
198
|
:error_tracks, :int,
|
200
|
-
:syncing,
|
199
|
+
:syncing, Bool
|
201
200
|
end
|
202
201
|
|
202
|
+
#
|
203
|
+
enum :connectionstate, [:logged_out, :logged_in, :disconnected, :undefined]
|
204
|
+
|
205
|
+
#
|
206
|
+
enum :connection_type, [:unknown, :none, :mobile, :mobile_roaming, :wifi, :wired]
|
207
|
+
|
208
|
+
#
|
209
|
+
enum :connection_rules, [:network , 0x1,
|
210
|
+
:network_if_roaming , 0x2,
|
211
|
+
:allow_sync_over_mobile, 0x4,
|
212
|
+
:allow_sync_over_wifi , 0x8]
|
213
|
+
|
214
|
+
attach_function :session_create, :sp_session_create, [ SessionConfig, :buffer_out ], :error, :blocking => true
|
215
|
+
attach_function :session_release, :sp_session_release, [ :session ], :void
|
216
|
+
|
217
|
+
attach_function :session_process_events, :sp_session_process_events, [ :session, :buffer_out ], :void, :blocking => true
|
218
|
+
attach_function :session_login, :sp_session_login, [ :session, :string, :string ], :void, :blocking => true
|
219
|
+
|
220
|
+
attach_function :session_user, :sp_session_user, [ :session ], :user
|
221
|
+
attach_function :session_logout, :sp_session_logout, [ :session ], :void
|
222
|
+
attach_function :session_connectionstate, :sp_session_connectionstate, [ :session ], :connectionstate
|
223
|
+
attach_function :session_userdata, :sp_session_userdata, [ :session ], :userdata
|
224
|
+
attach_function :session_set_cache_size, :sp_session_set_cache_size, [ :session, :size_t ], :void
|
225
|
+
attach_function :session_player_load, :sp_session_player_load, [ :session, :track ], :error
|
226
|
+
attach_function :session_player_seek, :sp_session_player_seek, [ :session, :int ], :void
|
227
|
+
attach_function :session_player_play, :sp_session_player_play, [ :session, :bool ], :void
|
228
|
+
attach_function :session_player_unload, :sp_session_player_unload, [ :session ], :void
|
229
|
+
attach_function :session_player_prefetch, :sp_session_player_prefetch, [ :session, :track ], :error
|
230
|
+
attach_function :session_playlistcontainer, :sp_session_playlistcontainer, [ :session ], :playlistcontainer
|
231
|
+
attach_function :session_inbox_create, :sp_session_inbox_create, [ :session ], :playlist
|
232
|
+
attach_function :session_starred_create, :sp_session_starred_create, [ :session ], :playlist
|
233
|
+
attach_function :session_starred_for_user_create, :sp_session_starred_for_user_create, [ :session, :string ], :playlist
|
234
|
+
attach_function :session_publishedcontainer_for_user_create, :sp_session_publishedcontainer_for_user_create, [ :playlist, :string ], :playlistcontainer
|
235
|
+
attach_function :session_preferred_bitrate, :sp_session_preferred_bitrate, [ :session, :bitrate ], :void
|
236
|
+
attach_function :session_num_friends, :sp_session_num_friends, [ :session ], :int
|
237
|
+
attach_function :session_friend, :sp_session_friend, [ :session, :int ], :user
|
238
|
+
|
239
|
+
attach_function :session_set_connection_type, :sp_session_set_connection_type, [ :session, :connection_type ], :void
|
240
|
+
attach_function :session_set_connection_rules, :sp_session_set_connection_rules, [ :session, :connection_rules ], :void
|
241
|
+
attach_function :offline_tracks_to_sync, :sp_offline_tracks_to_sync, [ :session ], :int
|
242
|
+
attach_function :offline_num_playlists, :sp_offline_num_playlists, [ :session ], :int
|
243
|
+
attach_function :offline_sync_get_status, :sp_offline_sync_get_status, [ :session, OfflineSyncStatus ], :void
|
244
|
+
attach_function :session_user_country, :sp_session_user_country, [ :session ], :int
|
245
|
+
attach_function :session_preferred_offline_bitrate, :sp_session_preferred_offline_bitrate, [ :session, :bitrate, :bool ], :void
|
246
|
+
|
203
247
|
#
|
204
248
|
# Link
|
205
249
|
#
|
@@ -209,26 +253,26 @@ module Spotify
|
|
209
253
|
enum :linktype, [:invalid, :track, :album, :artist, :search,
|
210
254
|
:playlist, :profile, :starred, :localtrack, :image]
|
211
255
|
|
212
|
-
attach_function :link_create_from_string, :sp_link_create_from_string, [ :string ], :
|
213
|
-
attach_function :link_create_from_track, :sp_link_create_from_track, [ :
|
214
|
-
attach_function :link_create_from_album, :sp_link_create_from_album, [ :
|
215
|
-
attach_function :link_create_from_artist, :sp_link_create_from_artist, [ :
|
216
|
-
attach_function :link_create_from_search, :sp_link_create_from_search, [ :
|
217
|
-
attach_function :link_create_from_playlist, :sp_link_create_from_playlist, [ :
|
218
|
-
attach_function :link_create_from_artist_portrait, :sp_link_create_from_artist_portrait, [ :
|
219
|
-
attach_function :link_create_from_album_cover, :sp_link_create_from_album_cover, [ :
|
220
|
-
attach_function :link_create_from_image, :sp_link_create_from_image, [ :
|
221
|
-
attach_function :link_create_from_user, :sp_link_create_from_user, [ :
|
222
|
-
attach_function :link_as_string, :sp_link_as_string, [ :
|
223
|
-
attach_function :link_type, :sp_link_type, [ :
|
224
|
-
attach_function :link_as_track, :sp_link_as_track, [ :
|
225
|
-
attach_function :link_as_track_and_offset, :sp_link_as_track_and_offset, [ :
|
226
|
-
attach_function :link_as_album, :sp_link_as_album, [ :
|
227
|
-
attach_function :link_as_artist, :sp_link_as_artist, [ :
|
228
|
-
attach_function :link_as_user, :sp_link_as_user, [ :
|
229
|
-
|
230
|
-
attach_function :link_add_ref, :sp_link_add_ref, [ :
|
231
|
-
attach_function :link_release, :sp_link_release, [ :
|
256
|
+
attach_function :link_create_from_string, :sp_link_create_from_string, [ :string ], :link
|
257
|
+
attach_function :link_create_from_track, :sp_link_create_from_track, [ :track, :int ], :link
|
258
|
+
attach_function :link_create_from_album, :sp_link_create_from_album, [ :album ], :link
|
259
|
+
attach_function :link_create_from_artist, :sp_link_create_from_artist, [ :artist ], :link
|
260
|
+
attach_function :link_create_from_search, :sp_link_create_from_search, [ :search ], :link
|
261
|
+
attach_function :link_create_from_playlist, :sp_link_create_from_playlist, [ :playlist ], :link
|
262
|
+
attach_function :link_create_from_artist_portrait, :sp_link_create_from_artist_portrait, [ :artist, :int ], :link
|
263
|
+
attach_function :link_create_from_album_cover, :sp_link_create_from_album_cover, [ :album ], :link
|
264
|
+
attach_function :link_create_from_image, :sp_link_create_from_image, [ :image ], :link
|
265
|
+
attach_function :link_create_from_user, :sp_link_create_from_user, [ :user ], :link
|
266
|
+
attach_function :link_as_string, :sp_link_as_string, [ :link, :buffer_out, :int ], :int
|
267
|
+
attach_function :link_type, :sp_link_type, [ :link ], :linktype
|
268
|
+
attach_function :link_as_track, :sp_link_as_track, [ :link ], :track
|
269
|
+
attach_function :link_as_track_and_offset, :sp_link_as_track_and_offset, [ :link, :buffer_out ], :track
|
270
|
+
attach_function :link_as_album, :sp_link_as_album, [ :link ], :album
|
271
|
+
attach_function :link_as_artist, :sp_link_as_artist, [ :link ], :artist
|
272
|
+
attach_function :link_as_user, :sp_link_as_user, [ :link ], :user
|
273
|
+
|
274
|
+
attach_function :link_add_ref, :sp_link_add_ref, [ :link ], :void
|
275
|
+
attach_function :link_release, :sp_link_release, [ :link ], :void
|
232
276
|
|
233
277
|
#
|
234
278
|
# Tracks
|
@@ -236,25 +280,25 @@ module Spotify
|
|
236
280
|
# @see http://developer.spotify.com/en/libspotify/docs/group__track.html
|
237
281
|
|
238
282
|
#
|
239
|
-
attach_function :track_is_loaded, :sp_track_is_loaded, [ :
|
240
|
-
attach_function :track_error, :sp_track_error, [ :
|
241
|
-
attach_function :track_is_available, :sp_track_is_available, [ :
|
242
|
-
attach_function :track_is_local, :sp_track_is_local, [ :
|
243
|
-
attach_function :track_is_autolinked, :sp_track_is_autolinked, [ :
|
244
|
-
attach_function :track_is_starred, :sp_track_is_starred, [ :
|
245
|
-
attach_function :track_set_starred, :sp_track_set_starred, [ :
|
246
|
-
attach_function :track_num_artists, :sp_track_num_artists, [ :
|
247
|
-
attach_function :track_artist, :sp_track_artist, [ :
|
248
|
-
attach_function :track_album, :sp_track_album, [ :
|
249
|
-
attach_function :track_name, :sp_track_name, [ :
|
250
|
-
attach_function :track_duration, :sp_track_duration, [ :
|
251
|
-
attach_function :track_popularity, :sp_track_popularity, [ :
|
252
|
-
attach_function :track_disc, :sp_track_disc, [ :
|
253
|
-
attach_function :track_index, :sp_track_index, [ :
|
254
|
-
attach_function :localtrack_create, :sp_localtrack_create, [ :string, :string, :string, :int ], :
|
255
|
-
|
256
|
-
attach_function :track_add_ref, :sp_track_add_ref, [ :
|
257
|
-
attach_function :track_release, :sp_track_release, [ :
|
283
|
+
attach_function :track_is_loaded, :sp_track_is_loaded, [ :track ], :bool
|
284
|
+
attach_function :track_error, :sp_track_error, [ :track ], :error
|
285
|
+
attach_function :track_is_available, :sp_track_is_available, [ :session, :track ], :bool
|
286
|
+
attach_function :track_is_local, :sp_track_is_local, [ :session, :track ], :bool
|
287
|
+
attach_function :track_is_autolinked, :sp_track_is_autolinked, [ :session, :track ], :bool
|
288
|
+
attach_function :track_is_starred, :sp_track_is_starred, [ :session, :track ], :bool
|
289
|
+
attach_function :track_set_starred, :sp_track_set_starred, [ :session, :array, :int, :bool ], :void
|
290
|
+
attach_function :track_num_artists, :sp_track_num_artists, [ :track ], :int
|
291
|
+
attach_function :track_artist, :sp_track_artist, [ :track, :int ], :artist
|
292
|
+
attach_function :track_album, :sp_track_album, [ :track ], :album
|
293
|
+
attach_function :track_name, :sp_track_name, [ :track ], :string
|
294
|
+
attach_function :track_duration, :sp_track_duration, [ :track ], :int
|
295
|
+
attach_function :track_popularity, :sp_track_popularity, [ :track ], :int
|
296
|
+
attach_function :track_disc, :sp_track_disc, [ :track ], :int
|
297
|
+
attach_function :track_index, :sp_track_index, [ :track ], :int
|
298
|
+
attach_function :localtrack_create, :sp_localtrack_create, [ :string, :string, :string, :int ], :track
|
299
|
+
|
300
|
+
attach_function :track_add_ref, :sp_track_add_ref, [ :track ], :void
|
301
|
+
attach_function :track_release, :sp_track_release, [ :track ], :void
|
258
302
|
|
259
303
|
#
|
260
304
|
# Albums
|
@@ -264,16 +308,16 @@ module Spotify
|
|
264
308
|
#
|
265
309
|
enum :albumtype, [:album, :single, :compilation, :unknown]
|
266
310
|
|
267
|
-
attach_function :album_is_loaded, :sp_album_is_loaded, [ :
|
268
|
-
attach_function :album_is_available, :sp_album_is_available, [ :
|
269
|
-
attach_function :album_artist, :sp_album_artist, [ :
|
270
|
-
attach_function :album_cover, :sp_album_cover, [ :
|
271
|
-
attach_function :album_name, :sp_album_name, [ :
|
272
|
-
attach_function :album_year, :sp_album_year, [ :
|
273
|
-
attach_function :album_type, :sp_album_type, [ :
|
274
|
-
|
275
|
-
attach_function :album_add_ref, :sp_album_add_ref, [ :
|
276
|
-
attach_function :album_release, :sp_album_release, [ :
|
311
|
+
attach_function :album_is_loaded, :sp_album_is_loaded, [ :album ], :bool
|
312
|
+
attach_function :album_is_available, :sp_album_is_available, [ :album ], :bool
|
313
|
+
attach_function :album_artist, :sp_album_artist, [ :album ], :artist
|
314
|
+
attach_function :album_cover, :sp_album_cover, [ :album ], :image_id
|
315
|
+
attach_function :album_name, :sp_album_name, [ :album ], :string
|
316
|
+
attach_function :album_year, :sp_album_year, [ :album ], :int
|
317
|
+
attach_function :album_type, :sp_album_type, [ :album ], :albumtype
|
318
|
+
|
319
|
+
attach_function :album_add_ref, :sp_album_add_ref, [ :album ], :void
|
320
|
+
attach_function :album_release, :sp_album_release, [ :album ], :void
|
277
321
|
|
278
322
|
#
|
279
323
|
# Album Browser
|
@@ -281,19 +325,20 @@ module Spotify
|
|
281
325
|
# @see http://developer.spotify.com/en/libspotify/docs/group__albumbrowse.html
|
282
326
|
|
283
327
|
#
|
284
|
-
|
285
|
-
attach_function :
|
286
|
-
attach_function :
|
287
|
-
attach_function :
|
288
|
-
attach_function :
|
289
|
-
attach_function :
|
290
|
-
attach_function :
|
291
|
-
attach_function :
|
292
|
-
attach_function :
|
293
|
-
attach_function :
|
294
|
-
|
295
|
-
|
296
|
-
attach_function :
|
328
|
+
callback :albumbrowse_complete_cb, [:albumbrowse, :userdata], :void
|
329
|
+
attach_function :albumbrowse_create, :sp_albumbrowse_create, [ :session, :album, :albumbrowse_complete_cb, :userdata ], :albumbrowse
|
330
|
+
attach_function :albumbrowse_is_loaded, :sp_albumbrowse_is_loaded, [ :albumbrowse ], :bool
|
331
|
+
attach_function :albumbrowse_error, :sp_albumbrowse_error, [ :albumbrowse ], :error
|
332
|
+
attach_function :albumbrowse_album, :sp_albumbrowse_album, [ :albumbrowse ], :album
|
333
|
+
attach_function :albumbrowse_artist, :sp_albumbrowse_artist, [ :albumbrowse ], :artist
|
334
|
+
attach_function :albumbrowse_num_copyrights, :sp_albumbrowse_num_copyrights, [ :albumbrowse ], :int
|
335
|
+
attach_function :albumbrowse_copyright, :sp_albumbrowse_copyright, [ :albumbrowse, :int ], :string
|
336
|
+
attach_function :albumbrowse_num_tracks, :sp_albumbrowse_num_tracks, [ :albumbrowse ], :int
|
337
|
+
attach_function :albumbrowse_track, :sp_albumbrowse_track, [ :albumbrowse, :int ], :track
|
338
|
+
attach_function :albumbrowse_review, :sp_albumbrowse_review, [ :albumbrowse ], :string
|
339
|
+
|
340
|
+
attach_function :albumbrowse_add_ref, :sp_albumbrowse_add_ref, [ :albumbrowse ], :void
|
341
|
+
attach_function :albumbrowse_release, :sp_albumbrowse_release, [ :albumbrowse ], :void
|
297
342
|
|
298
343
|
#
|
299
344
|
# Artists
|
@@ -301,11 +346,11 @@ module Spotify
|
|
301
346
|
# @see http://developer.spotify.com/en/libspotify/docs/group__artist.html
|
302
347
|
|
303
348
|
#
|
304
|
-
attach_function :artist_name, :sp_artist_name, [ :
|
305
|
-
attach_function :artist_is_loaded, :sp_artist_is_loaded, [ :
|
306
|
-
|
307
|
-
attach_function :artist_add_ref, :sp_artist_add_ref, [ :
|
308
|
-
attach_function :artist_release, :sp_artist_release, [ :
|
349
|
+
attach_function :artist_name, :sp_artist_name, [ :artist ], :string
|
350
|
+
attach_function :artist_is_loaded, :sp_artist_is_loaded, [ :artist ], :bool
|
351
|
+
|
352
|
+
attach_function :artist_add_ref, :sp_artist_add_ref, [ :artist ], :void
|
353
|
+
attach_function :artist_release, :sp_artist_release, [ :artist ], :void
|
309
354
|
|
310
355
|
#
|
311
356
|
# Artist Browsing
|
@@ -313,22 +358,23 @@ module Spotify
|
|
313
358
|
# @see http://developer.spotify.com/en/libspotify/docs/group__artistbrowse.html
|
314
359
|
|
315
360
|
#
|
316
|
-
|
317
|
-
attach_function :
|
318
|
-
attach_function :
|
319
|
-
attach_function :
|
320
|
-
attach_function :
|
321
|
-
attach_function :
|
322
|
-
attach_function :
|
323
|
-
attach_function :
|
324
|
-
attach_function :
|
325
|
-
attach_function :
|
326
|
-
attach_function :
|
327
|
-
attach_function :
|
328
|
-
attach_function :
|
329
|
-
|
330
|
-
|
331
|
-
attach_function :
|
361
|
+
callback :artistbrowse_complete_cb, [:artistbrowse, :userdata], :void
|
362
|
+
attach_function :artistbrowse_create, :sp_artistbrowse_create, [ :session, :artist, :artistbrowse_complete_cb, :userdata ], :artistbrowse
|
363
|
+
attach_function :artistbrowse_is_loaded, :sp_artistbrowse_is_loaded, [ :artistbrowse ], :bool
|
364
|
+
attach_function :artistbrowse_error, :sp_artistbrowse_error, [ :artistbrowse ], :error
|
365
|
+
attach_function :artistbrowse_artist, :sp_artistbrowse_artist, [ :artistbrowse ], :artist
|
366
|
+
attach_function :artistbrowse_num_portraits, :sp_artistbrowse_num_portraits, [ :artistbrowse ], :int
|
367
|
+
attach_function :artistbrowse_portrait, :sp_artistbrowse_portrait, [ :artistbrowse, :int ], :image_id
|
368
|
+
attach_function :artistbrowse_num_tracks, :sp_artistbrowse_num_tracks, [ :artistbrowse ], :int
|
369
|
+
attach_function :artistbrowse_track, :sp_artistbrowse_track, [ :artistbrowse, :int ], :track
|
370
|
+
attach_function :artistbrowse_num_albums, :sp_artistbrowse_num_albums, [ :artistbrowse ], :int
|
371
|
+
attach_function :artistbrowse_album, :sp_artistbrowse_album, [ :artistbrowse, :int ], :album
|
372
|
+
attach_function :artistbrowse_num_similar_artists, :sp_artistbrowse_num_similar_artists, [ :artistbrowse ], :int
|
373
|
+
attach_function :artistbrowse_similar_artist, :sp_artistbrowse_similar_artist, [ :artistbrowse, :int ], :artist
|
374
|
+
attach_function :artistbrowse_biography, :sp_artistbrowse_biography, [ :artistbrowse ], :string
|
375
|
+
|
376
|
+
attach_function :artistbrowse_add_ref, :sp_artistbrowse_add_ref, [ :artistbrowse ], :void
|
377
|
+
attach_function :artistbrowse_release, :sp_artistbrowse_release, [ :artistbrowse ], :void
|
332
378
|
|
333
379
|
#
|
334
380
|
# Images
|
@@ -338,19 +384,19 @@ module Spotify
|
|
338
384
|
#
|
339
385
|
enum :imageformat, [:unknown, -1, :jpeg]
|
340
386
|
|
341
|
-
callback :
|
342
|
-
attach_function :image_create, :sp_image_create, [ :
|
343
|
-
attach_function :image_add_load_callback, :sp_image_add_load_callback, [ :
|
344
|
-
attach_function :image_remove_load_callback, :sp_image_remove_load_callback, [ :
|
345
|
-
attach_function :image_is_loaded, :sp_image_is_loaded, [ :
|
346
|
-
attach_function :image_error, :sp_image_error, [ :
|
347
|
-
attach_function :image_format, :sp_image_format, [ :
|
348
|
-
attach_function :image_data, :sp_image_data, [ :
|
349
|
-
attach_function :image_image_id, :sp_image_image_id, [ :
|
350
|
-
attach_function :image_create_from_link, :sp_image_create_from_link, [ :
|
351
|
-
|
352
|
-
attach_function :image_add_ref, :sp_image_add_ref, [ :
|
353
|
-
attach_function :image_release, :sp_image_release, [ :
|
387
|
+
callback :image_loaded_cb, [ :image, :userdata ], :void
|
388
|
+
attach_function :image_create, :sp_image_create, [ :session, :image_id ], :image
|
389
|
+
attach_function :image_add_load_callback, :sp_image_add_load_callback, [ :image, :image_loaded_cb, :userdata ], :void
|
390
|
+
attach_function :image_remove_load_callback, :sp_image_remove_load_callback, [ :image, :image_loaded_cb, :userdata ], :void
|
391
|
+
attach_function :image_is_loaded, :sp_image_is_loaded, [ :image ], :bool
|
392
|
+
attach_function :image_error, :sp_image_error, [ :image ], :error
|
393
|
+
attach_function :image_format, :sp_image_format, [ :image ], :imageformat
|
394
|
+
attach_function :image_data, :sp_image_data, [ :image, :buffer_out ], :pointer
|
395
|
+
attach_function :image_image_id, :sp_image_image_id, [ :image ], :image_id
|
396
|
+
attach_function :image_create_from_link, :sp_image_create_from_link, [ :session, :link ], :image
|
397
|
+
|
398
|
+
attach_function :image_add_ref, :sp_image_add_ref, [ :image ], :void
|
399
|
+
attach_function :image_release, :sp_image_release, [ :image ], :void
|
354
400
|
|
355
401
|
#
|
356
402
|
# Searching
|
@@ -379,101 +425,60 @@ module Spotify
|
|
379
425
|
:techno , 0x20000
|
380
426
|
]
|
381
427
|
|
382
|
-
|
383
|
-
attach_function :
|
384
|
-
attach_function :
|
385
|
-
attach_function :
|
386
|
-
attach_function :
|
387
|
-
attach_function :
|
388
|
-
attach_function :
|
389
|
-
attach_function :
|
390
|
-
attach_function :
|
391
|
-
attach_function :
|
392
|
-
attach_function :
|
393
|
-
attach_function :
|
394
|
-
attach_function :
|
395
|
-
attach_function :
|
396
|
-
attach_function :
|
397
|
-
|
398
|
-
|
399
|
-
attach_function :
|
428
|
+
callback :search_complete_cb, [:search, :userdata], :void
|
429
|
+
attach_function :search_create, :sp_search_create, [ :session, :string, :int, :int, :int, :int, :int, :int, :search_complete_cb, :userdata ], :search
|
430
|
+
attach_function :radio_search_create, :sp_radio_search_create, [ :session, :uint, :uint, :radio_genre, :search_complete_cb, :userdata ], :search
|
431
|
+
attach_function :search_is_loaded, :sp_search_is_loaded, [ :search ], :bool
|
432
|
+
attach_function :search_error, :sp_search_error, [ :search ], :error
|
433
|
+
attach_function :search_num_tracks, :sp_search_num_tracks, [ :search ], :int
|
434
|
+
attach_function :search_track, :sp_search_track, [ :search, :int ], :track
|
435
|
+
attach_function :search_num_albums, :sp_search_num_albums, [ :search ], :int
|
436
|
+
attach_function :search_album, :sp_search_album, [ :search, :int ], :album
|
437
|
+
attach_function :search_num_artists, :sp_search_num_artists, [ :search ], :int
|
438
|
+
attach_function :search_artist, :sp_search_artist, [ :search, :int ], :artist
|
439
|
+
attach_function :search_query, :sp_search_query, [ :search ], :string
|
440
|
+
attach_function :search_did_you_mean, :sp_search_did_you_mean, [ :search ], :string
|
441
|
+
attach_function :search_total_tracks, :sp_search_total_tracks, [ :search ], :int
|
442
|
+
attach_function :search_total_albums, :sp_search_total_albums, [ :search ], :int
|
443
|
+
attach_function :search_total_artists, :sp_search_total_artists, [ :search ], :int
|
444
|
+
|
445
|
+
attach_function :search_add_ref, :sp_search_add_ref, [ :search ], :void
|
446
|
+
attach_function :search_release, :sp_search_release, [ :search ], :void
|
400
447
|
|
401
448
|
#
|
402
449
|
# Playlists
|
403
450
|
#
|
404
451
|
# @see http://developer.spotify.com/en/libspotify/docs/group__playlist.html
|
405
452
|
|
406
|
-
#
|
407
|
-
enum :playlist_type, [:playlist, :start_folder, :end_folder, :placeholder]
|
408
|
-
|
409
|
-
#
|
410
|
-
enum :playlist_offline_status, [:no, :yes, :downloading, :waiting]
|
411
|
-
|
412
|
-
attach_function :playlist_is_loaded, :sp_playlist_is_loaded, [ :pointer ], :bool
|
413
|
-
attach_function :playlist_add_callbacks, :sp_playlist_add_callbacks, [ :pointer, :pointer, :pointer ], :void
|
414
|
-
attach_function :playlist_remove_callbacks, :sp_playlist_remove_callbacks, [ :pointer, :pointer, :pointer ], :void
|
415
|
-
attach_function :playlist_num_tracks, :sp_playlist_num_tracks, [ :pointer ], :int
|
416
|
-
attach_function :playlist_track, :sp_playlist_track, [ :pointer, :int ], :pointer
|
417
|
-
attach_function :playlist_track_create_time, :sp_playlist_track_create_time, [ :pointer, :int ], :int
|
418
|
-
attach_function :playlist_track_creator, :sp_playlist_track_creator, [ :pointer, :int ], :pointer
|
419
|
-
attach_function :playlist_track_seen, :sp_playlist_track_seen, [ :pointer, :int ], :bool
|
420
|
-
attach_function :playlist_track_set_seen, :sp_playlist_track_set_seen, [ :pointer, :int, :bool ], :error
|
421
|
-
attach_function :playlist_track_message, :sp_playlist_track_message, [ :pointer, :int ], :string
|
422
|
-
attach_function :playlist_name, :sp_playlist_name, [ :pointer ], :string
|
423
|
-
attach_function :playlist_rename, :sp_playlist_rename, [ :pointer, :string ], :error
|
424
|
-
attach_function :playlist_owner, :sp_playlist_owner, [ :pointer ], :pointer
|
425
|
-
attach_function :playlist_is_collaborative, :sp_playlist_is_collaborative, [ :pointer ], :bool
|
426
|
-
attach_function :playlist_set_collaborative, :sp_playlist_set_collaborative, [ :pointer, :bool ], :void
|
427
|
-
attach_function :playlist_set_autolink_tracks, :sp_playlist_set_autolink_tracks, [ :pointer, :bool ], :void
|
428
|
-
attach_function :playlist_get_description, :sp_playlist_get_description, [ :pointer ], :string
|
429
|
-
attach_function :playlist_get_image, :sp_playlist_get_image, [ :pointer, :uchar ], :bool
|
430
|
-
attach_function :playlist_has_pending_changes, :sp_playlist_has_pending_changes, [ :pointer ], :bool
|
431
|
-
attach_function :playlist_add_tracks, :sp_playlist_add_tracks, [ :pointer, :pointer, :int, :int, :pointer ], :error
|
432
|
-
attach_function :playlist_remove_tracks, :sp_playlist_remove_tracks, [ :pointer, :pointer, :int ], :error
|
433
|
-
attach_function :playlist_reorder_tracks, :sp_playlist_reorder_tracks, [ :pointer, :pointer, :int, :int ], :error
|
434
|
-
attach_function :playlist_num_subscribers, :sp_playlist_num_subscribers, [ :pointer ], :uint
|
435
|
-
attach_function :playlist_subscribers, :sp_playlist_subscribers, [ :pointer ], :pointer
|
436
|
-
attach_function :playlist_subscribers_free, :sp_playlist_subscribers_free, [ :pointer ], :void
|
437
|
-
attach_function :playlist_update_subscribers, :sp_playlist_update_subscribers, [ :pointer, :pointer ], :void
|
438
|
-
attach_function :playlist_is_in_ram, :sp_playlist_is_in_ram, [ :pointer, :pointer ], :bool
|
439
|
-
attach_function :playlist_set_in_ram, :sp_playlist_set_in_ram, [ :pointer, :pointer, :bool ], :void
|
440
|
-
attach_function :playlist_create, :sp_playlist_create, [ :pointer, :pointer ], :pointer
|
441
|
-
attach_function :playlist_get_offline_status, :sp_playlist_get_offline_status, [ :pointer, :pointer ], :playlist_offline_status
|
442
|
-
attach_function :playlist_get_offline_download_completed, :sp_playlist_get_offline_download_completed, [ :pointer, :pointer ], :playlist_offline_status
|
443
|
-
attach_function :playlist_set_offline_mode, :sp_playlist_set_offline_mode, [ :pointer, :pointer, :bool ], :void
|
444
|
-
|
445
|
-
attach_function :playlist_add_ref, :sp_playlist_add_ref, [ :pointer ], :void
|
446
|
-
attach_function :playlist_release, :sp_playlist_release, [ :pointer ], :void
|
447
|
-
|
448
453
|
# FFI::Struct for Playlist callbacks.
|
449
454
|
#
|
450
|
-
# @attr [callback(:
|
451
|
-
# @attr [callback(:
|
452
|
-
# @attr [callback(:
|
453
|
-
# @attr [callback(:
|
454
|
-
# @attr [callback(:
|
455
|
-
# @attr [callback(:
|
456
|
-
# @attr [callback(:
|
457
|
-
# @attr [callback(:
|
458
|
-
# @attr [callback(:
|
459
|
-
# @attr [callback(:
|
460
|
-
# @attr [callback(:
|
461
|
-
# @attr [callback(:
|
462
|
-
# @attr [callback(:
|
455
|
+
# @attr [callback(:playlist, :array, :int, :int, :userdata):void] tracks_added
|
456
|
+
# @attr [callback(:playlist, :array, :int, :userdata):void] tracks_removed
|
457
|
+
# @attr [callback(:playlist, :array, :int, :int, :userdata):void] tracks_moved
|
458
|
+
# @attr [callback(:playlist, :userdata):void] playlist_renamed
|
459
|
+
# @attr [callback(:playlist, :userdata):void] playlist_state_changed
|
460
|
+
# @attr [callback(:playlist, :bool, :userdata):void] playlist_update_in_progress
|
461
|
+
# @attr [callback(:playlist, :userdata):void] playlist_metadata_updated
|
462
|
+
# @attr [callback(:playlist, :int, :user, :int, :userdata):void] track_created_changed
|
463
|
+
# @attr [callback(:playlist, :int, :bool, :userdata):void] track_seen_changed
|
464
|
+
# @attr [callback(:playlist, :string, :userdata):void] description_changed
|
465
|
+
# @attr [callback(:playlist, :image_id, :userdata):void] image_changed
|
466
|
+
# @attr [callback(:playlist, :int, :string, :userdata):void] track_message_changed
|
467
|
+
# @attr [callback(:playlist, :userdata):void] subscribers_changed
|
463
468
|
class PlaylistCallbacks < FFI::Struct
|
464
|
-
layout :tracks_added, callback([ :
|
465
|
-
:tracks_removed, callback([ :
|
466
|
-
:tracks_moved, callback([ :
|
467
|
-
:playlist_renamed, callback([ :
|
468
|
-
:playlist_state_changed, callback([ :
|
469
|
-
:playlist_update_in_progress, callback([ :
|
470
|
-
:playlist_metadata_updated, callback([ :
|
471
|
-
:track_created_changed, callback([ :
|
472
|
-
:track_seen_changed, callback([ :
|
473
|
-
:description_changed, callback([ :
|
474
|
-
:image_changed, callback([ :
|
475
|
-
:track_message_changed, callback([ :
|
476
|
-
:subscribers_changed, callback([ :
|
469
|
+
layout :tracks_added, callback([ :playlist, :array, :int, :int, :userdata ], :void),
|
470
|
+
:tracks_removed, callback([ :playlist, :array, :int, :userdata ], :void),
|
471
|
+
:tracks_moved, callback([ :playlist, :array, :int, :int, :userdata ], :void),
|
472
|
+
:playlist_renamed, callback([ :playlist, :userdata ], :void),
|
473
|
+
:playlist_state_changed, callback([ :playlist, :userdata ], :void),
|
474
|
+
:playlist_update_in_progress, callback([ :playlist, :bool, :userdata ], :void),
|
475
|
+
:playlist_metadata_updated, callback([ :playlist, :userdata ], :void),
|
476
|
+
:track_created_changed, callback([ :playlist, :int, :user, :int, :userdata ], :void),
|
477
|
+
:track_seen_changed, callback([ :playlist, :int, :bool, :userdata ], :void),
|
478
|
+
:description_changed, callback([ :playlist, :string, :userdata ], :void),
|
479
|
+
:image_changed, callback([ :playlist, :image_id, :userdata ], :void),
|
480
|
+
:track_message_changed, callback([ :playlist, :int, :string, :userdata ], :void),
|
481
|
+
:subscribers_changed, callback([ :playlist, :userdata ], :void)
|
477
482
|
end
|
478
483
|
|
479
484
|
# FFI::Struct for Subscribers of a Playlist.
|
@@ -482,45 +487,87 @@ module Spotify
|
|
482
487
|
# @attr [Pointer<String>] subscribers
|
483
488
|
class Subscribers < FFI::Struct
|
484
489
|
layout :count, :uint,
|
485
|
-
:subscribers, :
|
490
|
+
:subscribers, :array # array of count strings
|
486
491
|
end
|
487
492
|
|
488
493
|
#
|
489
|
-
|
494
|
+
enum :playlist_type, [:playlist, :start_folder, :end_folder, :placeholder]
|
495
|
+
|
490
496
|
#
|
497
|
+
enum :playlist_offline_status, [:no, :yes, :downloading, :waiting]
|
498
|
+
|
499
|
+
attach_function :playlist_is_loaded, :sp_playlist_is_loaded, [ :playlist ], :bool
|
500
|
+
attach_function :playlist_add_callbacks, :sp_playlist_add_callbacks, [ :playlist, PlaylistCallbacks, :userdata ], :void
|
501
|
+
attach_function :playlist_remove_callbacks, :sp_playlist_remove_callbacks, [ :playlist, PlaylistCallbacks, :userdata ], :void
|
502
|
+
attach_function :playlist_num_tracks, :sp_playlist_num_tracks, [ :playlist ], :int
|
503
|
+
attach_function :playlist_track, :sp_playlist_track, [ :playlist, :int ], :track
|
504
|
+
attach_function :playlist_track_create_time, :sp_playlist_track_create_time, [ :playlist, :int ], :int
|
505
|
+
attach_function :playlist_track_creator, :sp_playlist_track_creator, [ :playlist, :int ], :user
|
506
|
+
attach_function :playlist_track_seen, :sp_playlist_track_seen, [ :playlist, :int ], :bool
|
507
|
+
attach_function :playlist_track_set_seen, :sp_playlist_track_set_seen, [ :playlist, :int, :bool ], :error
|
508
|
+
attach_function :playlist_track_message, :sp_playlist_track_message, [ :playlist, :int ], :string
|
509
|
+
attach_function :playlist_name, :sp_playlist_name, [ :playlist ], :string
|
510
|
+
attach_function :playlist_rename, :sp_playlist_rename, [ :playlist, :string ], :error
|
511
|
+
attach_function :playlist_owner, :sp_playlist_owner, [ :playlist ], :user
|
512
|
+
attach_function :playlist_is_collaborative, :sp_playlist_is_collaborative, [ :playlist ], :bool
|
513
|
+
attach_function :playlist_set_collaborative, :sp_playlist_set_collaborative, [ :playlist, :bool ], :void
|
514
|
+
attach_function :playlist_set_autolink_tracks, :sp_playlist_set_autolink_tracks, [ :playlist, :bool ], :void
|
515
|
+
attach_function :playlist_get_description, :sp_playlist_get_description, [ :playlist ], :string
|
516
|
+
attach_function :playlist_get_image, :sp_playlist_get_image, [ :playlist, :image_id ], :bool
|
517
|
+
attach_function :playlist_has_pending_changes, :sp_playlist_has_pending_changes, [ :playlist ], :bool
|
518
|
+
attach_function :playlist_add_tracks, :sp_playlist_add_tracks, [ :playlist, :array, :int, :int, :session ], :error
|
519
|
+
attach_function :playlist_remove_tracks, :sp_playlist_remove_tracks, [ :playlist, :array, :int ], :error
|
520
|
+
attach_function :playlist_reorder_tracks, :sp_playlist_reorder_tracks, [ :playlist, :array, :int, :int ], :error
|
521
|
+
attach_function :playlist_num_subscribers, :sp_playlist_num_subscribers, [ :playlist ], :uint
|
522
|
+
attach_function :playlist_subscribers, :sp_playlist_subscribers, [ :playlist ], Subscribers
|
523
|
+
attach_function :playlist_subscribers_free, :sp_playlist_subscribers_free, [ Subscribers ], :void
|
524
|
+
attach_function :playlist_update_subscribers, :sp_playlist_update_subscribers, [ :session, :playlist ], :void
|
525
|
+
attach_function :playlist_is_in_ram, :sp_playlist_is_in_ram, [ :session, :playlist ], :bool
|
526
|
+
attach_function :playlist_set_in_ram, :sp_playlist_set_in_ram, [ :session, :playlist, :bool ], :void
|
527
|
+
attach_function :playlist_create, :sp_playlist_create, [ :session, :link ], :playlist
|
528
|
+
attach_function :playlist_get_offline_status, :sp_playlist_get_offline_status, [ :session, :playlist ], :playlist_offline_status
|
529
|
+
attach_function :playlist_get_offline_download_completed, :sp_playlist_get_offline_download_completed, [ :session, :playlist ], :int
|
530
|
+
attach_function :playlist_set_offline_mode, :sp_playlist_set_offline_mode, [ :session, :playlist, :bool ], :void
|
531
|
+
|
532
|
+
attach_function :playlist_add_ref, :sp_playlist_add_ref, [ :playlist ], :void
|
533
|
+
attach_function :playlist_release, :sp_playlist_release, [ :playlist ], :void
|
491
534
|
|
492
535
|
#
|
493
|
-
|
494
|
-
|
495
|
-
attach_function :playlistcontainer_num_playlists, :sp_playlistcontainer_num_playlists, [ :pointer ], :int
|
496
|
-
attach_function :playlistcontainer_playlist, :sp_playlistcontainer_playlist, [ :pointer, :int ], :pointer
|
497
|
-
attach_function :playlistcontainer_playlist_type, :sp_playlistcontainer_playlist_type, [ :pointer, :int ], :int
|
498
|
-
attach_function :playlistcontainer_playlist_folder_name, :sp_playlistcontainer_playlist_folder_name, [ :pointer, :int, :string, :int ], :error
|
499
|
-
attach_function :playlistcontainer_playlist_folder_id, :sp_playlistcontainer_playlist_folder_id, [ :pointer, :int ], :uint64
|
500
|
-
attach_function :playlistcontainer_add_new_playlist, :sp_playlistcontainer_add_new_playlist, [ :pointer, :string ], :pointer
|
501
|
-
attach_function :playlistcontainer_add_playlist, :sp_playlistcontainer_add_playlist, [ :pointer, :pointer ], :pointer
|
502
|
-
attach_function :playlistcontainer_remove_playlist, :sp_playlistcontainer_remove_playlist, [ :pointer, :int ], :error
|
503
|
-
attach_function :playlistcontainer_move_playlist, :sp_playlistcontainer_move_playlist, [ :pointer, :int, :int, :bool ], :error
|
504
|
-
attach_function :playlistcontainer_add_folder, :sp_playlistcontainer_add_folder, [ :pointer, :int, :string ], :error
|
505
|
-
attach_function :playlistcontainer_owner, :sp_playlistcontainer_owner, [ :pointer ], :pointer
|
506
|
-
attach_function :playlistcontainer_is_loaded, :sp_playlistcontainer_is_loaded, [ :pointer ], :bool
|
507
|
-
|
508
|
-
attach_function :playlistcontainer_add_ref, :sp_playlistcontainer_add_ref, [ :pointer ], :void
|
509
|
-
attach_function :playlistcontainer_release, :sp_playlistcontainer_release, [ :pointer ], :void
|
536
|
+
# Playlist Container
|
537
|
+
#
|
510
538
|
|
511
539
|
# FFI::Struct for the PlaylistContainer.
|
512
540
|
#
|
513
|
-
# @attr [callback(:
|
514
|
-
# @attr [callback(:
|
515
|
-
# @attr [callback(:
|
516
|
-
# @attr [callback(:
|
541
|
+
# @attr [callback(:playlistcontainer, :playlist, :int, :userdata):void] playlist_added
|
542
|
+
# @attr [callback(:playlistcontainer, :playlist, :int, :userdata):void] playlist_removed
|
543
|
+
# @attr [callback(:playlistcontainer, :playlist, :int, :int, :userdata):void] playlist_moved
|
544
|
+
# @attr [callback(:playlistcontainer, :userdata):void] container_loaded
|
517
545
|
class PlaylistContainerCallbacks < FFI::Struct
|
518
|
-
layout :playlist_added, callback([ :
|
519
|
-
:playlist_removed, callback([ :
|
520
|
-
:playlist_moved, callback([ :
|
521
|
-
:container_loaded, callback([ :
|
546
|
+
layout :playlist_added, callback([ :playlistcontainer, :playlist, :int, :userdata ], :void),
|
547
|
+
:playlist_removed, callback([ :playlistcontainer, :playlist, :int, :userdata ], :void),
|
548
|
+
:playlist_moved, callback([ :playlistcontainer, :playlist, :int, :int, :userdata ], :void),
|
549
|
+
:container_loaded, callback([ :playlistcontainer, :userdata ], :void)
|
522
550
|
end
|
523
551
|
|
552
|
+
#
|
553
|
+
attach_function :playlistcontainer_add_callbacks, :sp_playlistcontainer_add_callbacks, [ :playlistcontainer, PlaylistContainerCallbacks, :userdata ], :void
|
554
|
+
attach_function :playlistcontainer_remove_callbacks, :sp_playlistcontainer_remove_callbacks, [ :playlistcontainer, PlaylistContainerCallbacks, :userdata ], :void
|
555
|
+
attach_function :playlistcontainer_num_playlists, :sp_playlistcontainer_num_playlists, [ :playlistcontainer ], :int
|
556
|
+
attach_function :playlistcontainer_playlist, :sp_playlistcontainer_playlist, [ :playlistcontainer, :int ], :playlist
|
557
|
+
attach_function :playlistcontainer_playlist_type, :sp_playlistcontainer_playlist_type, [ :playlistcontainer, :int ], :playlist_type
|
558
|
+
attach_function :playlistcontainer_playlist_folder_name, :sp_playlistcontainer_playlist_folder_name, [ :playlistcontainer, :int, :buffer_out, :int ], :error
|
559
|
+
attach_function :playlistcontainer_playlist_folder_id, :sp_playlistcontainer_playlist_folder_id, [ :playlistcontainer, :int ], :uint64
|
560
|
+
attach_function :playlistcontainer_add_new_playlist, :sp_playlistcontainer_add_new_playlist, [ :playlistcontainer, :string ], :playlist
|
561
|
+
attach_function :playlistcontainer_add_playlist, :sp_playlistcontainer_add_playlist, [ :playlistcontainer, :link ], :playlist
|
562
|
+
attach_function :playlistcontainer_remove_playlist, :sp_playlistcontainer_remove_playlist, [ :playlistcontainer, :int ], :error
|
563
|
+
attach_function :playlistcontainer_move_playlist, :sp_playlistcontainer_move_playlist, [ :playlistcontainer, :int, :int, :bool ], :error
|
564
|
+
attach_function :playlistcontainer_add_folder, :sp_playlistcontainer_add_folder, [ :playlistcontainer, :int, :string ], :error
|
565
|
+
attach_function :playlistcontainer_owner, :sp_playlistcontainer_owner, [ :playlistcontainer ], :user
|
566
|
+
attach_function :playlistcontainer_is_loaded, :sp_playlistcontainer_is_loaded, [ :playlistcontainer ], :bool
|
567
|
+
|
568
|
+
attach_function :playlistcontainer_add_ref, :sp_playlistcontainer_add_ref, [ :playlistcontainer ], :void
|
569
|
+
attach_function :playlistcontainer_release, :sp_playlistcontainer_release, [ :playlistcontainer ], :void
|
570
|
+
|
524
571
|
#
|
525
572
|
# User handling
|
526
573
|
#
|
@@ -529,15 +576,15 @@ module Spotify
|
|
529
576
|
#
|
530
577
|
enum :relation_type, [:unknown, :none, :unidirectional, :bidirectional]
|
531
578
|
|
532
|
-
attach_function :user_canonical_name, :sp_user_canonical_name, [ :
|
533
|
-
attach_function :user_display_name, :sp_user_display_name, [ :
|
534
|
-
attach_function :user_is_loaded, :sp_user_is_loaded, [ :
|
535
|
-
attach_function :user_full_name, :sp_user_full_name, [ :
|
536
|
-
attach_function :user_picture, :sp_user_picture, [ :
|
537
|
-
attach_function :user_relation_type, :sp_user_relation_type, [ :
|
538
|
-
|
539
|
-
attach_function :user_add_ref, :sp_user_add_ref, [ :
|
540
|
-
attach_function :user_release, :sp_user_release, [ :
|
579
|
+
attach_function :user_canonical_name, :sp_user_canonical_name, [ :user ], :string
|
580
|
+
attach_function :user_display_name, :sp_user_display_name, [ :user ], :string
|
581
|
+
attach_function :user_is_loaded, :sp_user_is_loaded, [ :user ], :bool
|
582
|
+
attach_function :user_full_name, :sp_user_full_name, [ :user ], :string
|
583
|
+
attach_function :user_picture, :sp_user_picture, [ :user ], :string
|
584
|
+
attach_function :user_relation_type, :sp_user_relation_type, [ :session, :user ], :relation_type
|
585
|
+
|
586
|
+
attach_function :user_add_ref, :sp_user_add_ref, [ :user ], :void
|
587
|
+
attach_function :user_release, :sp_user_release, [ :user ], :void
|
541
588
|
|
542
589
|
#
|
543
590
|
# Toplists
|
@@ -548,18 +595,19 @@ module Spotify
|
|
548
595
|
enum :toplisttype, [:artists, :albums, :tracks]
|
549
596
|
enum :toplistregion, [:everywhere, :user]
|
550
597
|
|
551
|
-
|
552
|
-
attach_function :
|
553
|
-
attach_function :
|
554
|
-
attach_function :
|
555
|
-
attach_function :
|
556
|
-
attach_function :
|
557
|
-
attach_function :
|
558
|
-
attach_function :
|
559
|
-
attach_function :
|
560
|
-
|
561
|
-
|
562
|
-
attach_function :
|
598
|
+
callback :toplistbrowse_complete_cb, [:toplistbrowse, :userdata], :void
|
599
|
+
attach_function :toplistbrowse_create, :sp_toplistbrowse_create, [ :session, :toplisttype, :toplistregion, :string, :toplistbrowse_complete_cb, :userdata ], :toplistbrowse
|
600
|
+
attach_function :toplistbrowse_is_loaded, :sp_toplistbrowse_is_loaded, [ :toplistbrowse ], :bool
|
601
|
+
attach_function :toplistbrowse_error, :sp_toplistbrowse_error, [ :toplistbrowse ], :error
|
602
|
+
attach_function :toplistbrowse_num_artists, :sp_toplistbrowse_num_artists, [ :toplistbrowse ], :int
|
603
|
+
attach_function :toplistbrowse_artist, :sp_toplistbrowse_artist, [ :toplistbrowse, :int ], :artist
|
604
|
+
attach_function :toplistbrowse_num_albums, :sp_toplistbrowse_num_albums, [ :toplistbrowse ], :int
|
605
|
+
attach_function :toplistbrowse_album, :sp_toplistbrowse_album, [ :toplistbrowse, :int ], :album
|
606
|
+
attach_function :toplistbrowse_num_tracks, :sp_toplistbrowse_num_tracks, [ :toplistbrowse ], :int
|
607
|
+
attach_function :toplistbrowse_track, :sp_toplistbrowse_track, [ :toplistbrowse, :int ], :track
|
608
|
+
|
609
|
+
attach_function :toplistbrowse_add_ref, :sp_toplistbrowse_add_ref, [ :toplistbrowse ], :void
|
610
|
+
attach_function :toplistbrowse_release, :sp_toplistbrowse_release, [ :toplistbrowse ], :void
|
563
611
|
|
564
612
|
#
|
565
613
|
# Inbox
|
@@ -567,9 +615,10 @@ module Spotify
|
|
567
615
|
# @see http://developer.spotify.com/en/libspotify/docs/group__inbox.html
|
568
616
|
|
569
617
|
#
|
570
|
-
|
571
|
-
attach_function :
|
572
|
-
|
573
|
-
|
574
|
-
attach_function :
|
575
|
-
|
618
|
+
callback :inboxpost_complete_cb, [:inbox, :userdata], :void
|
619
|
+
attach_function :inbox_post_tracks, :sp_inbox_post_tracks, [ :session, :string, :array, :int, :string, :inboxpost_complete_cb, :userdata ], :inbox
|
620
|
+
attach_function :inbox_error, :sp_inbox_error, [ :inbox ], :error
|
621
|
+
|
622
|
+
attach_function :inbox_add_ref, :sp_inbox_add_ref, [ :inbox ], :void
|
623
|
+
attach_function :inbox_release, :sp_inbox_release, [ :inbox ], :void
|
624
|
+
end
|