rdio 0.0.92 → 0.0.93
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/rdio/api.rb +6 -6
- data/lib/rdio/base.rb +97 -91
- data/lib/rdio/types.rb +5 -5
- metadata +4 -4
data/lib/rdio/api.rb
CHANGED
@@ -22,7 +22,7 @@ module Rdio
|
|
22
22
|
def addToCollection(objs)
|
23
23
|
method = 'addToCollection'
|
24
24
|
type = true
|
25
|
-
args = {:keys=>keys(objs)}
|
25
|
+
args = {:keys=>Rdio::keys(objs)}
|
26
26
|
return_object type,method,args,true
|
27
27
|
end
|
28
28
|
|
@@ -30,7 +30,7 @@ module Rdio
|
|
30
30
|
def addToPlaylist(playlist,tracks)
|
31
31
|
method = 'addToPlaylist'
|
32
32
|
type = true
|
33
|
-
args = {:playlist=>playlist, :tracks=>keys(tracks)}
|
33
|
+
args = {:playlist=>playlist, :tracks=>Rdio::keys(tracks)}
|
34
34
|
return_object type,method,args,true
|
35
35
|
end
|
36
36
|
|
@@ -41,7 +41,7 @@ module Rdio
|
|
41
41
|
method = 'createPlaylist'
|
42
42
|
type = Playlist
|
43
43
|
args = {:name=>name,:description=>description,
|
44
|
-
:tracks=>keys(tracks)}
|
44
|
+
:tracks=>Rdio::keys(tracks)}
|
45
45
|
args[:extras] = extras if extras
|
46
46
|
return_object type,method,args,true
|
47
47
|
end
|
@@ -88,7 +88,7 @@ module Rdio
|
|
88
88
|
end
|
89
89
|
method = 'get'
|
90
90
|
cls = type
|
91
|
-
args = {:keys=>keys(objs)}
|
91
|
+
args = {:keys=>Rdio::keys(objs)}
|
92
92
|
args[:extras] = extras if extras
|
93
93
|
json = call method,args
|
94
94
|
if Rdio::log_json
|
@@ -300,7 +300,7 @@ module Rdio
|
|
300
300
|
def removeFromCollection(objs)
|
301
301
|
method = 'removeFromCollection'
|
302
302
|
type = Boolean
|
303
|
-
args = {:keys=>keys(objs)}
|
303
|
+
args = {:keys=>Rdio::keys(objs)}
|
304
304
|
return_object type,method,args
|
305
305
|
end
|
306
306
|
|
@@ -309,7 +309,7 @@ module Rdio
|
|
309
309
|
method = 'removeFromPlaylist'
|
310
310
|
type = TODO
|
311
311
|
args = {:playlist=>playlist,:index=>index,
|
312
|
-
:count=>count,:tracks=>keys(tracks)}
|
312
|
+
:count=>count,:tracks=>Rdio::keys(tracks)}
|
313
313
|
return_object type,method,args,truex
|
314
314
|
end
|
315
315
|
|
data/lib/rdio/base.rb
CHANGED
@@ -19,80 +19,106 @@ class Class
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module Rdio
|
22
|
-
# string -> string
|
23
|
-
#
|
24
|
-
# Converts camel-case string to underscore-delimited one.
|
25
|
-
#
|
26
|
-
def camel2underscores(s)
|
27
|
-
return s if not s
|
28
|
-
return s if s == ''
|
29
|
-
def decapitilize(s)
|
30
|
-
s[0,1].downcase + s[1,s.length-1].to_s
|
31
|
-
end
|
32
|
-
s = decapitilize s
|
33
|
-
while s.match /([A-Z]+)/
|
34
|
-
s = s.gsub /#{$1}/,'_'+ decapitilize($1)
|
35
|
-
end
|
36
|
-
s
|
37
|
-
end
|
38
22
|
|
39
|
-
|
40
|
-
def add_to_array(arr,str)
|
41
|
-
if arr == nil
|
42
|
-
return [str.to_s]
|
43
|
-
end
|
44
|
-
if arr == ''
|
45
|
-
return [str.to_s]
|
46
|
-
end
|
47
|
-
if arr.is_a? Array
|
48
|
-
return arr + [str.to_s]
|
49
|
-
end
|
50
|
-
return arr.to_s + ',' + str.to_s
|
51
|
-
end
|
52
|
-
|
53
|
-
# array -> string
|
54
|
-
#
|
55
|
-
# Creates a ','-separated string of the value of 'to_k' from all the
|
56
|
-
# values in 'objs'. We also remove the nils from the input array.
|
57
|
-
#
|
58
|
-
def keys(objs)
|
59
|
-
(not objs) ? '' : objs.compact.map {|x| x.to_k}.join(',')
|
60
|
-
end
|
23
|
+
class << self
|
61
24
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
25
|
+
# hash -> hash
|
26
|
+
#
|
27
|
+
# Uses the value of 'to_k' for all the iput hash values in the
|
28
|
+
# result hash. This is used to make sure that the arguments passed
|
29
|
+
# to create urls use keys for the values of objects like Artist,
|
30
|
+
# Track, etc. Also, we use the simple name of classes.
|
31
|
+
#
|
32
|
+
def convert_args(args)
|
33
|
+
return nil if not args
|
34
|
+
res = {}
|
35
|
+
args.each do |k,v|
|
36
|
+
if v.is_a? Array
|
37
|
+
v = keys v
|
38
|
+
else
|
39
|
+
v = v.to_k
|
40
|
+
end
|
41
|
+
res[k] = v
|
42
|
+
end
|
43
|
+
return res
|
80
44
|
end
|
81
|
-
|
82
|
-
|
45
|
+
|
46
|
+
# string -> string
|
47
|
+
#
|
48
|
+
# Converts camel-case string to underscore-delimited one.
|
49
|
+
#
|
50
|
+
def camel2underscores(s)
|
51
|
+
return s if not s
|
52
|
+
return s if s == ''
|
53
|
+
def decapitilize(s)
|
54
|
+
s[0,1].downcase + s[1,s.length-1].to_s
|
55
|
+
end
|
56
|
+
s = decapitilize s
|
57
|
+
while s.match /([A-Z]+)/
|
58
|
+
s = s.gsub /#{$1}/,'_'+ decapitilize($1)
|
59
|
+
end
|
60
|
+
s
|
83
61
|
end
|
84
|
-
|
85
|
-
|
62
|
+
|
63
|
+
# Adds 'str' to the array or string 'arr'
|
64
|
+
def add_to_array(arr,str)
|
65
|
+
if arr == nil
|
66
|
+
return [str.to_s]
|
67
|
+
end
|
68
|
+
if arr == ''
|
69
|
+
return [str.to_s]
|
70
|
+
end
|
71
|
+
if arr.is_a? Array
|
72
|
+
return arr + [str.to_s]
|
73
|
+
end
|
74
|
+
return arr.to_s + ',' + str.to_s
|
86
75
|
end
|
87
|
-
|
88
|
-
|
76
|
+
|
77
|
+
# array -> string
|
78
|
+
#
|
79
|
+
# Creates a ','-separated string of the value of 'to_k' from all the
|
80
|
+
# values in 'objs'. We also remove the nils from the input array.
|
81
|
+
#
|
82
|
+
def keys(objs)
|
83
|
+
(not objs) ? '' : objs.compact.map {|x| x.to_k}.join(',')
|
89
84
|
end
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
85
|
+
|
86
|
+
# object -> value
|
87
|
+
#
|
88
|
+
# Converts v which is probably a string, to a primitive value, so we
|
89
|
+
# can have primitives other than strings as attributes of BaseObjs.
|
90
|
+
#
|
91
|
+
def to_o(v)
|
92
|
+
if v == nil
|
93
|
+
return nil
|
94
|
+
end
|
95
|
+
s = v.to_s
|
96
|
+
if not s
|
97
|
+
return nil
|
98
|
+
end
|
99
|
+
if s == 'nil'
|
100
|
+
return nil
|
101
|
+
end
|
102
|
+
if s =~ /^\d+$/
|
103
|
+
return s.to_i
|
104
|
+
end
|
105
|
+
if s =~ /^\d+\.?\d*$/
|
106
|
+
return s.to_f
|
107
|
+
end
|
108
|
+
if s == 'true'
|
109
|
+
return true
|
110
|
+
end
|
111
|
+
if s == 'false'
|
112
|
+
return false
|
113
|
+
end
|
114
|
+
if s =~ /^\[.*\]$/
|
115
|
+
s = s.gsub /^\[/,''
|
116
|
+
s = s.gsub /\]$/,''
|
117
|
+
return s.split(',').map {|x| Rdio::to_o x}
|
118
|
+
end
|
119
|
+
return s
|
94
120
|
end
|
95
|
-
|
121
|
+
|
96
122
|
end
|
97
123
|
|
98
124
|
class << self
|
@@ -118,6 +144,7 @@ module Rdio
|
|
118
144
|
end
|
119
145
|
|
120
146
|
def fill(x)
|
147
|
+
return self if not x
|
121
148
|
syms_to_types = Rdio::symbols_to_types || {}
|
122
149
|
x.each do |k,v|
|
123
150
|
sym = Rdio::camel2underscores(k).to_sym
|
@@ -141,7 +168,7 @@ module Rdio
|
|
141
168
|
o.fill v
|
142
169
|
end
|
143
170
|
else
|
144
|
-
o = to_o v
|
171
|
+
o = Rdio::to_o v
|
145
172
|
end
|
146
173
|
begin
|
147
174
|
sym_eq = (Rdio::camel2underscores(k)+'=').to_sym
|
@@ -236,32 +263,11 @@ module Rdio
|
|
236
263
|
@oauth.get_pin
|
237
264
|
end
|
238
265
|
|
239
|
-
# hash -> hash
|
240
|
-
#
|
241
|
-
# Uses the value of 'to_k' for all the iput hash values in the
|
242
|
-
# result hash. This is used to make sure that the arguments passed
|
243
|
-
# to create urls use keys for the values of objects like Artist,
|
244
|
-
# Track, etc. Also, we use the simple name of classes.
|
245
|
-
#
|
246
|
-
def self.convert_args(args)
|
247
|
-
return nil if not args
|
248
|
-
res = {}
|
249
|
-
args.each do |k,v|
|
250
|
-
if v.is_a? Array
|
251
|
-
v = keys v
|
252
|
-
else
|
253
|
-
v = v.to_k
|
254
|
-
end
|
255
|
-
res[k] = v
|
256
|
-
end
|
257
|
-
return res
|
258
|
-
end
|
259
|
-
|
260
266
|
def call(method,args,requires_auth=false)
|
261
267
|
#
|
262
268
|
# Convert object with keys just to use their keys
|
263
269
|
#
|
264
|
-
args =
|
270
|
+
args = Rdio::convert_args args
|
265
271
|
if Rdio::log_methods
|
266
272
|
Rdio::log "Called method: #{method}(#{args}) : auth=#{requires_auth}"
|
267
273
|
end
|
@@ -327,7 +333,7 @@ module Rdio
|
|
327
333
|
if type == Boolean or type == String or
|
328
334
|
type == Fixnum or type == Float
|
329
335
|
return false if not result
|
330
|
-
return to_o result
|
336
|
+
return Rdio::to_o result
|
331
337
|
end
|
332
338
|
#
|
333
339
|
# A mild hack, but for get the result is a hash of keys to
|
data/lib/rdio/types.rb
CHANGED
@@ -32,7 +32,7 @@ module Rdio
|
|
32
32
|
|
33
33
|
# Returns an array of Album for the query and other params
|
34
34
|
def self.search(query,never_or=nil,extras=nil,start=nil,count=nil)
|
35
|
-
extras = add_to_array extras,'artists'
|
35
|
+
extras = Rdio::add_to_array extras,'artists'
|
36
36
|
Search.search query,Artist,never_or,extras,start,count
|
37
37
|
end
|
38
38
|
|
@@ -144,7 +144,7 @@ module Rdio
|
|
144
144
|
|
145
145
|
# Returns an array of Album for the query and other params
|
146
146
|
def self.search(query,never_or=nil,extras=nil,start=nil,count=nil)
|
147
|
-
extras = add_to_array extras,'albums'
|
147
|
+
extras = Rdio::add_to_array extras,'albums'
|
148
148
|
Search.search query,Album,never_or,extras,start,count
|
149
149
|
end
|
150
150
|
|
@@ -262,7 +262,7 @@ module Rdio
|
|
262
262
|
|
263
263
|
# Returns an array of Track for the query and other params
|
264
264
|
def self.search(query,never_or=nil,extras=nil,start=nil,count=nil)
|
265
|
-
extras = add_to_array extras,'tracks'
|
265
|
+
extras = Rdio::add_to_array extras,'tracks'
|
266
266
|
Search.search query,Track,never_or,extras,start,count
|
267
267
|
end
|
268
268
|
|
@@ -339,7 +339,7 @@ module Rdio
|
|
339
339
|
|
340
340
|
# Returns an array of Playlist for the query and other params
|
341
341
|
def self.search(query,never_or=nil,extras=nil,start=nil,count=nil)
|
342
|
-
extras = add_to_array extras,'playlists'
|
342
|
+
extras = Rdio::add_to_array extras,'playlists'
|
343
343
|
Search.search query,Playlist,never_or,extras,start,count
|
344
344
|
end
|
345
345
|
|
@@ -431,7 +431,7 @@ module Rdio
|
|
431
431
|
|
432
432
|
# Returns an array of User for the query and other params
|
433
433
|
def self.search(query,never_or=nil,extras=nil,start=nil,count=nil)
|
434
|
-
extras = add_to_array extras,'users'
|
434
|
+
extras = Rdio::add_to_array extras,'users'
|
435
435
|
Search.search query,User,never_or,extras,start,count
|
436
436
|
end
|
437
437
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 165
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 93
|
10
|
+
version: 0.0.93
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeffrey Palm
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-22 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|