spotify 12.5.3 → 12.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +20 -5
  4. data/CHANGELOG.md +29 -1
  5. data/Gemfile +5 -0
  6. data/MIT-LICENSE +21 -0
  7. data/README.markdown +75 -50
  8. data/Rakefile +1 -1
  9. data/examples/example-audio_delivery_speed.rb +48 -0
  10. data/examples/{audio-stream_example.rb → example-audio_stream.rb} +14 -29
  11. data/examples/example-console.rb +9 -0
  12. data/examples/example-listing_playlists.rb +89 -0
  13. data/examples/example-loading_object.rb +25 -0
  14. data/examples/example-random_related_artists.rb +53 -0
  15. data/examples/support.rb +106 -0
  16. data/lib/spotify.rb +36 -55
  17. data/lib/spotify/api.rb +54 -26
  18. data/lib/spotify/api/album.rb +45 -2
  19. data/lib/spotify/api/album_browse.rb +81 -3
  20. data/lib/spotify/api/artist.rb +21 -2
  21. data/lib/spotify/api/artist_browse.rb +121 -3
  22. data/lib/spotify/api/error.rb +5 -1
  23. data/lib/spotify/api/image.rb +72 -6
  24. data/lib/spotify/api/inbox.rb +33 -4
  25. data/lib/spotify/api/link.rb +117 -4
  26. data/lib/spotify/api/miscellaneous.rb +12 -0
  27. data/lib/spotify/api/playlist.rb +321 -16
  28. data/lib/spotify/api/playlist_container.rb +168 -9
  29. data/lib/spotify/api/search.rb +156 -3
  30. data/lib/spotify/api/session.rb +390 -26
  31. data/lib/spotify/api/toplist_browse.rb +74 -3
  32. data/lib/spotify/api/track.rb +134 -4
  33. data/lib/spotify/api/user.rb +18 -2
  34. data/lib/spotify/api_helpers.rb +47 -0
  35. data/lib/spotify/data_converters.rb +7 -0
  36. data/lib/spotify/{types → data_converters}/best_effort_string.rb +1 -1
  37. data/lib/spotify/{types → data_converters}/byte_string.rb +0 -0
  38. data/lib/spotify/data_converters/country_code.rb +30 -0
  39. data/lib/spotify/{types → data_converters}/image_id.rb +1 -1
  40. data/lib/spotify/{type_safety.rb → data_converters/type_safety.rb} +0 -0
  41. data/lib/spotify/{types → data_converters}/utf8_string.rb +2 -2
  42. data/lib/spotify/{types → data_converters}/utf8_string_pointer.rb +2 -2
  43. data/lib/spotify/error.rb +180 -47
  44. data/lib/spotify/managed_pointer.rb +32 -12
  45. data/lib/spotify/monkey_patches/ffi_buffer.rb +11 -0
  46. data/lib/spotify/monkey_patches/ffi_enums.rb +4 -0
  47. data/lib/spotify/monkey_patches/ffi_pointer.rb +1 -0
  48. data/lib/spotify/structs.rb +4 -0
  49. data/lib/spotify/structs/session_callbacks.rb +97 -26
  50. data/lib/spotify/structs/session_config.rb +1 -1
  51. data/lib/spotify/structs/subscribers.rb +4 -3
  52. data/lib/spotify/types.rb +104 -5
  53. data/lib/spotify/{objects → types}/album.rb +0 -0
  54. data/lib/spotify/{objects → types}/album_browse.rb +0 -0
  55. data/lib/spotify/{objects → types}/artist.rb +0 -0
  56. data/lib/spotify/{objects → types}/artist_browse.rb +0 -0
  57. data/lib/spotify/{objects → types}/image.rb +0 -0
  58. data/lib/spotify/{objects → types}/inbox.rb +0 -0
  59. data/lib/spotify/{objects → types}/link.rb +0 -0
  60. data/lib/spotify/{objects → types}/playlist.rb +0 -0
  61. data/lib/spotify/{objects → types}/playlist_container.rb +0 -0
  62. data/lib/spotify/{objects → types}/search.rb +0 -0
  63. data/lib/spotify/{objects → types}/session.rb +0 -0
  64. data/lib/spotify/{objects → types}/toplist_browse.rb +0 -0
  65. data/lib/spotify/{objects → types}/track.rb +0 -0
  66. data/lib/spotify/{objects → types}/user.rb +0 -0
  67. data/lib/spotify/util.rb +38 -35
  68. data/lib/spotify/version.rb +1 -1
  69. data/spec/spec_helper.rb +24 -13
  70. data/spec/spotify/api/image_spec.rb +32 -0
  71. data/spec/spotify/api/inbox_spec.rb +34 -0
  72. data/spec/spotify/api/link_spec.rb +40 -0
  73. data/spec/spotify/api/playlist_spec.rb +99 -0
  74. data/spec/spotify/api/playlistcontainer_spec.rb +82 -0
  75. data/spec/spotify/api/session_spec.rb +97 -0
  76. data/spec/spotify/api/track_spec.rb +29 -0
  77. data/spec/spotify/api_error_spec.rb +55 -0
  78. data/spec/spotify/api_spec.rb +17 -11
  79. data/spec/spotify/{types → data_converters}/best_effort_string_spec.rb +4 -4
  80. data/spec/spotify/{types → data_converters}/byte_string_spec.rb +0 -0
  81. data/spec/spotify/data_converters/country_code_spec.rb +16 -0
  82. data/spec/spotify/{types → data_converters}/image_id_spec.rb +1 -1
  83. data/spec/spotify/{type_safety_spec.rb → data_converters/type_safety_spec.rb} +0 -0
  84. data/spec/spotify/{types → data_converters}/utf8_string_pointer_spec.rb +0 -0
  85. data/spec/spotify/{types → data_converters}/utf8_string_spec.rb +1 -1
  86. data/spec/spotify/{api/functions_spec.rb → functions_spec.rb} +2 -0
  87. data/spec/spotify/managed_pointer_spec.rb +13 -13
  88. data/spec/spotify/structs/subscribers_spec.rb +5 -3
  89. data/spec/spotify/{defines_spec.rb → types_spec.rb} +16 -3
  90. data/spec/spotify/util_spec.rb +24 -0
  91. data/spec/spotify_spec.rb +74 -0
  92. data/spec/support/spotify_util.rb +6 -2
  93. data/spec/support/spy_output.rb +16 -0
  94. data/spotify.gemspec +4 -2
  95. metadata +111 -71
  96. data/examples/README.md +0 -15
  97. data/examples/console_example.rb +0 -22
  98. data/examples/example_support.rb +0 -66
  99. data/examples/loading-object_example.rb +0 -43
  100. data/examples/logging-in_example.rb +0 -58
  101. data/lib/spotify/defines.rb +0 -109
  102. data/lib/spotify/objects.rb +0 -17
  103. data/spec/spotify/enums_spec.rb +0 -9
  104. data/spec/spotify/spotify_spec.rb +0 -69
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
8
8
  gem.homepage = 'https://github.com/Burgestrand/spotify'
9
9
  gem.authors = ["Kim Burgestrand"]
10
10
  gem.email = ['kim@burgestrand.se']
11
- gem.license = 'X11 License'
11
+ gem.license = 'MIT License'
12
12
 
13
13
  gem.files = `git ls-files`.split("\n")
14
14
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -17,10 +17,12 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.version = Spotify::VERSION
19
19
  gem.platform = Gem::Platform::RUBY
20
- gem.required_ruby_version = '>= 1.9'
20
+ gem.required_ruby_version = '>= 2.0'
21
21
 
22
22
  gem.add_dependency 'ffi', ['~> 1.0', '>= 1.0.11']
23
23
  gem.add_dependency 'libspotify', '~> 12.1.51'
24
+ gem.add_dependency 'performer', '~> 1.0'
25
+
24
26
  gem.add_development_dependency 'rake'
25
27
  gem.add_development_dependency 'rbgccxml'
26
28
  gem.add_development_dependency 'rspec'
metadata CHANGED
@@ -1,89 +1,103 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.5.3
4
+ version: 12.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kim Burgestrand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-09 00:00:00.000000000 Z
11
+ date: 2014-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.0.11
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1.0'
30
- - - '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.11
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: libspotify
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: 12.1.51
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ~>
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: 12.1.51
47
+ - !ruby/object:Gem::Dependency
48
+ name: performer
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: rake
49
63
  requirement: !ruby/object:Gem::Requirement
50
64
  requirements:
51
- - - '>='
65
+ - - ">="
52
66
  - !ruby/object:Gem::Version
53
67
  version: '0'
54
68
  type: :development
55
69
  prerelease: false
56
70
  version_requirements: !ruby/object:Gem::Requirement
57
71
  requirements:
58
- - - '>='
72
+ - - ">="
59
73
  - !ruby/object:Gem::Version
60
74
  version: '0'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: rbgccxml
63
77
  requirement: !ruby/object:Gem::Requirement
64
78
  requirements:
65
- - - '>='
79
+ - - ">="
66
80
  - !ruby/object:Gem::Version
67
81
  version: '0'
68
82
  type: :development
69
83
  prerelease: false
70
84
  version_requirements: !ruby/object:Gem::Requirement
71
85
  requirements:
72
- - - '>='
86
+ - - ">="
73
87
  - !ruby/object:Gem::Version
74
88
  version: '0'
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: rspec
77
91
  requirement: !ruby/object:Gem::Requirement
78
92
  requirements:
79
- - - '>='
93
+ - - ">="
80
94
  - !ruby/object:Gem::Version
81
95
  version: '0'
82
96
  type: :development
83
97
  prerelease: false
84
98
  version_requirements: !ruby/object:Gem::Requirement
85
99
  requirements:
86
- - - '>='
100
+ - - ">="
87
101
  - !ruby/object:Gem::Version
88
102
  version: '0'
89
103
  description:
@@ -93,21 +107,23 @@ executables: []
93
107
  extensions: []
94
108
  extra_rdoc_files: []
95
109
  files:
96
- - .gemtest
97
- - .gitignore
98
- - .rspec
99
- - .travis.yml
110
+ - ".gemtest"
111
+ - ".gitignore"
112
+ - ".rspec"
113
+ - ".travis.yml"
100
114
  - CHANGELOG.md
101
115
  - Gemfile
116
+ - MIT-LICENSE
102
117
  - README.markdown
103
118
  - Rakefile
104
119
  - examples/.gitignore
105
- - examples/README.md
106
- - examples/audio-stream_example.rb
107
- - examples/console_example.rb
108
- - examples/example_support.rb
109
- - examples/loading-object_example.rb
110
- - examples/logging-in_example.rb
120
+ - examples/example-audio_delivery_speed.rb
121
+ - examples/example-audio_stream.rb
122
+ - examples/example-console.rb
123
+ - examples/example-listing_playlists.rb
124
+ - examples/example-loading_object.rb
125
+ - examples/example-random_related_artists.rb
126
+ - examples/support.rb
111
127
  - lib/spotify.rb
112
128
  - lib/spotify/api.rb
113
129
  - lib/spotify/api/album.rb
@@ -118,6 +134,7 @@ files:
118
134
  - lib/spotify/api/image.rb
119
135
  - lib/spotify/api/inbox.rb
120
136
  - lib/spotify/api/link.rb
137
+ - lib/spotify/api/miscellaneous.rb
121
138
  - lib/spotify/api/playlist.rb
122
139
  - lib/spotify/api/playlist_container.rb
123
140
  - lib/spotify/api/search.rb
@@ -125,25 +142,20 @@ files:
125
142
  - lib/spotify/api/toplist_browse.rb
126
143
  - lib/spotify/api/track.rb
127
144
  - lib/spotify/api/user.rb
128
- - lib/spotify/defines.rb
145
+ - lib/spotify/api_helpers.rb
146
+ - lib/spotify/data_converters.rb
147
+ - lib/spotify/data_converters/best_effort_string.rb
148
+ - lib/spotify/data_converters/byte_string.rb
149
+ - lib/spotify/data_converters/country_code.rb
150
+ - lib/spotify/data_converters/image_id.rb
151
+ - lib/spotify/data_converters/type_safety.rb
152
+ - lib/spotify/data_converters/utf8_string.rb
153
+ - lib/spotify/data_converters/utf8_string_pointer.rb
129
154
  - lib/spotify/error.rb
130
155
  - lib/spotify/managed_pointer.rb
156
+ - lib/spotify/monkey_patches/ffi_buffer.rb
157
+ - lib/spotify/monkey_patches/ffi_enums.rb
131
158
  - lib/spotify/monkey_patches/ffi_pointer.rb
132
- - lib/spotify/objects.rb
133
- - lib/spotify/objects/album.rb
134
- - lib/spotify/objects/album_browse.rb
135
- - lib/spotify/objects/artist.rb
136
- - lib/spotify/objects/artist_browse.rb
137
- - lib/spotify/objects/image.rb
138
- - lib/spotify/objects/inbox.rb
139
- - lib/spotify/objects/link.rb
140
- - lib/spotify/objects/playlist.rb
141
- - lib/spotify/objects/playlist_container.rb
142
- - lib/spotify/objects/search.rb
143
- - lib/spotify/objects/session.rb
144
- - lib/spotify/objects/toplist_browse.rb
145
- - lib/spotify/objects/track.rb
146
- - lib/spotify/objects/user.rb
147
159
  - lib/spotify/structs.rb
148
160
  - lib/spotify/structs/audio_buffer_stats.rb
149
161
  - lib/spotify/structs/audio_format.rb
@@ -153,35 +165,52 @@ files:
153
165
  - lib/spotify/structs/session_callbacks.rb
154
166
  - lib/spotify/structs/session_config.rb
155
167
  - lib/spotify/structs/subscribers.rb
156
- - lib/spotify/type_safety.rb
157
168
  - lib/spotify/types.rb
158
- - lib/spotify/types/best_effort_string.rb
159
- - lib/spotify/types/byte_string.rb
160
- - lib/spotify/types/image_id.rb
161
- - lib/spotify/types/utf8_string.rb
162
- - lib/spotify/types/utf8_string_pointer.rb
169
+ - lib/spotify/types/album.rb
170
+ - lib/spotify/types/album_browse.rb
171
+ - lib/spotify/types/artist.rb
172
+ - lib/spotify/types/artist_browse.rb
173
+ - lib/spotify/types/image.rb
174
+ - lib/spotify/types/inbox.rb
175
+ - lib/spotify/types/link.rb
176
+ - lib/spotify/types/playlist.rb
177
+ - lib/spotify/types/playlist_container.rb
178
+ - lib/spotify/types/search.rb
179
+ - lib/spotify/types/session.rb
180
+ - lib/spotify/types/toplist_browse.rb
181
+ - lib/spotify/types/track.rb
182
+ - lib/spotify/types/user.rb
163
183
  - lib/spotify/util.rb
164
184
  - lib/spotify/version.rb
165
185
  - spec/bench_helper.rb
166
186
  - spec/benchmarks/managed_pointer_bench.rb
167
187
  - spec/spec_helper.rb
168
- - spec/spotify/api/functions_spec.rb
188
+ - spec/spotify/api/image_spec.rb
189
+ - spec/spotify/api/inbox_spec.rb
190
+ - spec/spotify/api/link_spec.rb
191
+ - spec/spotify/api/playlist_spec.rb
192
+ - spec/spotify/api/playlistcontainer_spec.rb
193
+ - spec/spotify/api/session_spec.rb
194
+ - spec/spotify/api/track_spec.rb
195
+ - spec/spotify/api_error_spec.rb
169
196
  - spec/spotify/api_spec.rb
170
- - spec/spotify/defines_spec.rb
171
- - spec/spotify/enums_spec.rb
197
+ - spec/spotify/data_converters/best_effort_string_spec.rb
198
+ - spec/spotify/data_converters/byte_string_spec.rb
199
+ - spec/spotify/data_converters/country_code_spec.rb
200
+ - spec/spotify/data_converters/image_id_spec.rb
201
+ - spec/spotify/data_converters/type_safety_spec.rb
202
+ - spec/spotify/data_converters/utf8_string_pointer_spec.rb
203
+ - spec/spotify/data_converters/utf8_string_spec.rb
204
+ - spec/spotify/functions_spec.rb
172
205
  - spec/spotify/managed_pointer_spec.rb
173
206
  - spec/spotify/monkey_patches/ffi_pointer_spec.rb
174
- - spec/spotify/spotify_spec.rb
175
207
  - spec/spotify/structs/session_config_spec.rb
176
208
  - spec/spotify/structs/struct_spec.rb
177
209
  - spec/spotify/structs/subscribers_spec.rb
178
210
  - spec/spotify/structs_spec.rb
179
- - spec/spotify/type_safety_spec.rb
180
- - spec/spotify/types/best_effort_string_spec.rb
181
- - spec/spotify/types/byte_string_spec.rb
182
- - spec/spotify/types/image_id_spec.rb
183
- - spec/spotify/types/utf8_string_pointer_spec.rb
184
- - spec/spotify/types/utf8_string_spec.rb
211
+ - spec/spotify/types_spec.rb
212
+ - spec/spotify/util_spec.rb
213
+ - spec/spotify_spec.rb
185
214
  - spec/support/api-linux.h
186
215
  - spec/support/api-linux.xml
187
216
  - spec/support/api-mac.h
@@ -190,10 +219,11 @@ files:
190
219
  - spec/support/linux-platform.rb
191
220
  - spec/support/mac-platform.rb
192
221
  - spec/support/spotify_util.rb
222
+ - spec/support/spy_output.rb
193
223
  - spotify.gemspec
194
224
  homepage: https://github.com/Burgestrand/spotify
195
225
  licenses:
196
- - X11 License
226
+ - MIT License
197
227
  metadata: {}
198
228
  post_install_message:
199
229
  rdoc_options: []
@@ -201,17 +231,17 @@ require_paths:
201
231
  - lib
202
232
  required_ruby_version: !ruby/object:Gem::Requirement
203
233
  requirements:
204
- - - '>='
234
+ - - ">="
205
235
  - !ruby/object:Gem::Version
206
- version: '1.9'
236
+ version: '2.0'
207
237
  required_rubygems_version: !ruby/object:Gem::Requirement
208
238
  requirements:
209
- - - '>='
239
+ - - ">="
210
240
  - !ruby/object:Gem::Version
211
241
  version: '0'
212
242
  requirements: []
213
243
  rubyforge_project:
214
- rubygems_version: 2.1.10
244
+ rubygems_version: 2.2.2
215
245
  signing_key:
216
246
  specification_version: 4
217
247
  summary: Low-level Ruby bindings for libspotify, the official Spotify C API
@@ -219,23 +249,32 @@ test_files:
219
249
  - spec/bench_helper.rb
220
250
  - spec/benchmarks/managed_pointer_bench.rb
221
251
  - spec/spec_helper.rb
222
- - spec/spotify/api/functions_spec.rb
252
+ - spec/spotify/api/image_spec.rb
253
+ - spec/spotify/api/inbox_spec.rb
254
+ - spec/spotify/api/link_spec.rb
255
+ - spec/spotify/api/playlist_spec.rb
256
+ - spec/spotify/api/playlistcontainer_spec.rb
257
+ - spec/spotify/api/session_spec.rb
258
+ - spec/spotify/api/track_spec.rb
259
+ - spec/spotify/api_error_spec.rb
223
260
  - spec/spotify/api_spec.rb
224
- - spec/spotify/defines_spec.rb
225
- - spec/spotify/enums_spec.rb
261
+ - spec/spotify/data_converters/best_effort_string_spec.rb
262
+ - spec/spotify/data_converters/byte_string_spec.rb
263
+ - spec/spotify/data_converters/country_code_spec.rb
264
+ - spec/spotify/data_converters/image_id_spec.rb
265
+ - spec/spotify/data_converters/type_safety_spec.rb
266
+ - spec/spotify/data_converters/utf8_string_pointer_spec.rb
267
+ - spec/spotify/data_converters/utf8_string_spec.rb
268
+ - spec/spotify/functions_spec.rb
226
269
  - spec/spotify/managed_pointer_spec.rb
227
270
  - spec/spotify/monkey_patches/ffi_pointer_spec.rb
228
- - spec/spotify/spotify_spec.rb
229
271
  - spec/spotify/structs/session_config_spec.rb
230
272
  - spec/spotify/structs/struct_spec.rb
231
273
  - spec/spotify/structs/subscribers_spec.rb
232
274
  - spec/spotify/structs_spec.rb
233
- - spec/spotify/type_safety_spec.rb
234
- - spec/spotify/types/best_effort_string_spec.rb
235
- - spec/spotify/types/byte_string_spec.rb
236
- - spec/spotify/types/image_id_spec.rb
237
- - spec/spotify/types/utf8_string_pointer_spec.rb
238
- - spec/spotify/types/utf8_string_spec.rb
275
+ - spec/spotify/types_spec.rb
276
+ - spec/spotify/util_spec.rb
277
+ - spec/spotify_spec.rb
239
278
  - spec/support/api-linux.h
240
279
  - spec/support/api-linux.xml
241
280
  - spec/support/api-mac.h
@@ -244,4 +283,5 @@ test_files:
244
283
  - spec/support/linux-platform.rb
245
284
  - spec/support/mac-platform.rb
246
285
  - spec/support/spotify_util.rb
286
+ - spec/support/spy_output.rb
247
287
  has_rdoc:
@@ -1,15 +0,0 @@
1
- # How to run the examples:
2
-
3
- 1. Install the dependencies. Preferrably via bundler with `bundle install`.
4
- 2. Configure your environment variables SPOTIFY\_USERNAME, SPOTIFY\_PASSWORD.
5
- 3. Download your binary application key from <https://developer.spotify.com/technologies/libspotify/keys/>.
6
- 4. Put your `spotify_appkey.key` application key in the example directory.
7
- 5. Run your specific example, e.g. `bundle exec ruby logging-in.rb`.
8
-
9
- ## Available examples and what they do
10
-
11
- - **logging-in.rb**
12
-
13
- a fairly small example on how you could login with the spotify API. It
14
- has some callbacks to provide more information on what happens during
15
- the process.
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require_relative "example_support"
5
-
6
- config = Spotify::SessionConfig.new({
7
- api_version: Spotify::API_VERSION.to_i,
8
- application_key: $appkey,
9
- cache_location: ".spotify/",
10
- settings_location: ".spotify/",
11
- user_agent: "spotify for ruby",
12
- callbacks: nil,
13
- })
14
-
15
- $logger.info "Creating session."
16
- $session = Support.create_session(config)
17
-
18
- $logger.info "Created! Logging in."
19
- Spotify.session_login($session, $username, $password, false, nil)
20
-
21
- $logger.info "Logged in! Entering interactive session…"
22
- binding.pry
@@ -1,66 +0,0 @@
1
- require "bundler/setup"
2
- require "spotify"
3
- require "logger"
4
- require "pry"
5
-
6
- # Kill main thread if any other thread dies.
7
- Thread.abort_on_exception = true
8
-
9
- # We use a logger to print some information on when things are happening.
10
- $stderr.sync = true
11
- $logger = Logger.new($stderr)
12
- $logger.level = Logger::INFO
13
-
14
- #
15
- # Some utility.
16
- #
17
-
18
- module Support
19
- module_function
20
-
21
- def logger
22
- $logger
23
- end
24
-
25
- # libspotify supports callbacks, but they are not useful for waiting on
26
- # operations (how they fire can be strange at times, and sometimes they
27
- # might not fire at all). As a result, polling is the way to go.
28
- def poll(session)
29
- until yield
30
- FFI::MemoryPointer.new(:int) do |ptr|
31
- Spotify.session_process_events(session, ptr)
32
- end
33
- sleep(0.1)
34
- end
35
- end
36
-
37
- # For making sure fetching configuration options fail with a useful error
38
- # message when running the examples.
39
- def env(name)
40
- ENV.fetch(name) do
41
- raise "Missing ENV['#{name}']. Please: export #{name}='your value'"
42
- end
43
- end
44
-
45
- # Ask the user for input with a prompt explaining what kind of input.
46
- def prompt(message)
47
- print "#{message}: "
48
- gets.chomp
49
- end
50
-
51
- def create_session(config)
52
- FFI::MemoryPointer.new(Spotify::Session) do |ptr|
53
- Spotify.try(:session_create, config, ptr)
54
- return Spotify::Session.new(ptr.read_pointer)
55
- end
56
- end
57
- end
58
-
59
- # Load the configuration.
60
- $appkey = IO.read("./spotify_appkey.key", encoding: "BINARY")
61
- $username = Support.env("SPOTIFY_USERNAME")
62
- if ENV.has_key?("SPOTIFY_BLOB")
63
- $blob = ENV["SPOTIFY_BLOB"]
64
- else
65
- $password = Support.env("SPOTIFY_PASSWORD")
66
- end