daapclient 0.1.0 → 0.2.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.
Files changed (107) hide show
  1. data/CHANGELOG +36 -0
  2. data/EXAMPLES +79 -0
  3. data/LICENSE +340 -0
  4. data/NOTES +33 -0
  5. data/README +7 -31
  6. data/lib/net/daap.rb +34 -20
  7. data/lib/net/daap/album.rb +16 -0
  8. data/lib/net/daap/artist.rb +16 -0
  9. data/lib/net/daap/daap_version.rb +7 -0
  10. data/lib/net/daap/database.rb +54 -27
  11. data/lib/net/daap/dmap.rb +13 -24
  12. data/lib/net/daap/playlist.rb +4 -5
  13. data/lib/net/daap/song.rb +10 -8
  14. data/test/data/mt-daapd/02dd88de4b3a69c74bcc56c1acca9ae5.txt +0 -0
  15. data/test/data/mt-daapd/0de583b288d8ae30f89acb26d4c8535b.txt +0 -0
  16. data/test/data/mt-daapd/4146ec82a0f0a638db9293a0c2039e6b.txt +0 -0
  17. data/test/data/mt-daapd/51a2a6f2a53743bec7e79fe0d074dd28.txt +0 -0
  18. data/test/data/mt-daapd/6069971903eef3c8c71ec2c7b395bfeb.txt +0 -0
  19. data/test/data/mt-daapd/{e9a8e709c2116651157182f130207048.txt → 7102a16e834342b8264f1fb5226690e5.txt} +0 -0
  20. data/test/data/mt-daapd/9d29fb31969da7757fa2f4baa3a52fe9.txt +0 -0
  21. data/test/data/mt-daapd/a52dd33cc99471cc156528c06b22e709.txt +0 -0
  22. data/test/data/mt-daapd/a600829e59b3d719b32f25323a2719b0.txt +0 -0
  23. data/test/data/mt-daapd/e2552df8d742fe31d6cc6e1e41e496b3.txt +0 -0
  24. data/test/data/mt-daapd/fc631aa54b83344df9ccf1fbaa7684b0.txt +0 -0
  25. data/test/data/song_data.txt +0 -0
  26. data/test/data/song_structure.txt +209 -0
  27. data/test/mock_server.rb +56 -0
  28. data/test/server_saver.rb +31 -0
  29. data/test/tc_artists.rb +33 -0
  30. data/test/tc_client.rb +47 -116
  31. data/test/tc_download.rb +29 -0
  32. data/test/tc_playlist.rb +37 -0
  33. data/test/tc_protocol.rb +3 -0
  34. data/test/test_daap.rb +23 -0
  35. data/test/ts_daap.rb +7 -0
  36. metadata +41 -97
  37. data/doc/classes/Net.html +0 -127
  38. data/doc/classes/Net/DAAP.html +0 -168
  39. data/doc/classes/Net/DAAP/Client.html +0 -269
  40. data/doc/classes/Net/DAAP/Client.src/M000003.html +0 -20
  41. data/doc/classes/Net/DAAP/Client.src/M000004.html +0 -28
  42. data/doc/classes/Net/DAAP/Client.src/M000005.html +0 -33
  43. data/doc/classes/Net/DAAP/Client.src/M000006.html +0 -37
  44. data/doc/classes/Net/DAAP/Client.src/M000007.html +0 -20
  45. data/doc/classes/Net/DAAP/Client.src/M000008.html +0 -24
  46. data/doc/classes/Net/DAAP/Client.src/M000009.html +0 -18
  47. data/doc/classes/Net/DAAP/DAAPv2.html +0 -165
  48. data/doc/classes/Net/DAAP/DAAPv2.src/M000016.html +0 -30
  49. data/doc/classes/Net/DAAP/DAAPv2.src/M000017.html +0 -21
  50. data/doc/classes/Net/DAAP/DAAPv3.html +0 -178
  51. data/doc/classes/Net/DAAP/DAAPv3.src/M000018.html +0 -30
  52. data/doc/classes/Net/DAAP/DAAPv3.src/M000019.html +0 -23
  53. data/doc/classes/Net/DAAP/DMAP.html +0 -176
  54. data/doc/classes/Net/DAAP/DMAP.src/M000013.html +0 -20
  55. data/doc/classes/Net/DAAP/DMAP.src/M000014.html +0 -18
  56. data/doc/classes/Net/DAAP/DMAP.src/M000015.html +0 -24
  57. data/doc/classes/Net/DAAP/Database.html +0 -224
  58. data/doc/classes/Net/DAAP/Database.src/M000010.html +0 -25
  59. data/doc/classes/Net/DAAP/Database.src/M000011.html +0 -21
  60. data/doc/classes/Net/DAAP/Database.src/M000012.html +0 -35
  61. data/doc/classes/Net/DAAP/Playlist.html +0 -192
  62. data/doc/classes/Net/DAAP/Playlist.src/M000001.html +0 -24
  63. data/doc/classes/Net/DAAP/Playlist.src/M000002.html +0 -30
  64. data/doc/classes/Net/DAAP/Song.html +0 -208
  65. data/doc/classes/Net/DAAP/Song.src/M000020.html +0 -27
  66. data/doc/classes/Net/DAAP/Song.src/M000021.html +0 -19
  67. data/doc/created.rid +0 -1
  68. data/doc/files/CHANGELOG.html +0 -134
  69. data/doc/files/LICENSE.html +0 -531
  70. data/doc/files/README.html +0 -182
  71. data/doc/files/lib/net/daap/database_rb.html +0 -101
  72. data/doc/files/lib/net/daap/dmap_rb.html +0 -101
  73. data/doc/files/lib/net/daap/playlist_rb.html +0 -101
  74. data/doc/files/lib/net/daap/song_rb.html +0 -101
  75. data/doc/files/lib/net/daap_rb.html +0 -114
  76. data/doc/fr_class_index.html +0 -35
  77. data/doc/fr_file_index.html +0 -34
  78. data/doc/fr_method_index.html +0 -47
  79. data/doc/index.html +0 -24
  80. data/doc/rdoc-style.css +0 -208
  81. data/lib/CVS/Entries +0 -1
  82. data/lib/CVS/Repository +0 -1
  83. data/lib/CVS/Root +0 -1
  84. data/lib/net/CVS/Entries +0 -2
  85. data/lib/net/CVS/Repository +0 -1
  86. data/lib/net/CVS/Root +0 -1
  87. data/lib/net/daap/CVS/Entries +0 -5
  88. data/lib/net/daap/CVS/Repository +0 -1
  89. data/lib/net/daap/CVS/Root +0 -1
  90. data/test/CVS/Entries +0 -4
  91. data/test/CVS/Repository +0 -1
  92. data/test/CVS/Root +0 -1
  93. data/test/data/CVS/Entries +0 -1
  94. data/test/data/CVS/Repository +0 -1
  95. data/test/data/CVS/Root +0 -1
  96. data/test/data/mt-daapd/079aca35773150da9fd98db10c7fd0c0.txt +0 -0
  97. data/test/data/mt-daapd/2972f65088b42a06b5d3ca089d71791d.txt +0 -0
  98. data/test/data/mt-daapd/440c2217e6207c54c317c296f71f9769.txt +0 -0
  99. data/test/data/mt-daapd/4d1ce9f941cbd823ed06f1f1baa5a3b9.txt +0 -0
  100. data/test/data/mt-daapd/7bded8b540fd082f102d25e181b47bc4.txt +0 -0
  101. data/test/data/mt-daapd/CVS/Entries +0 -11
  102. data/test/data/mt-daapd/CVS/Repository +0 -1
  103. data/test/data/mt-daapd/CVS/Root +0 -1
  104. data/test/data/mt-daapd/b3e894b87111bdba88e4765967f4b45a.txt +0 -0
  105. data/test/data/mt-daapd/d56b699830e77ba53855679cb1d252da.txt +0 -0
  106. data/test/data/mt-daapd/e61ce3062cb76770658896b778ad06cd.txt +0 -0
  107. data/test/data/mt-daapd/f9073959a0afacebfab7e3bf19c2714a.txt +0 -0
@@ -6,11 +6,10 @@ module Net
6
6
  attr_reader :itemcount, :persistentid, :name, :id
7
7
 
8
8
  def initialize(args)
9
- info = args[:pl_info]
10
- @itemcount = info['dmap.itemcount']
11
- @persistentid = info['dmap.persistentid']
12
- @name = info['dmap.itemname']
13
- @id = info['dmap.itemid']
9
+ @itemcount = args['dmap.itemcount']
10
+ @persistentid = args['dmap.persistentid']
11
+ @name = args['dmap.itemname']
12
+ @id = args['dmap.itemid']
14
13
  @daap = args[:daap]
15
14
  @db = args[:db]
16
15
  end
data/lib/net/daap/song.rb CHANGED
@@ -4,15 +4,17 @@ module Net
4
4
  class Song
5
5
  attr_reader :size, :album, :name, :artist, :format, :persistentid, :id
6
6
 
7
+ alias :to_s :name
8
+
7
9
  def initialize(args)
8
- info = args[:song_info]
9
- @size = info['daap.songsize']
10
- @album = info['daap.songalbum']
11
- @name = info['dmap.itemname']
12
- @artist = info['daap.songartist']
13
- @format = info['daap.songformat']
14
- @persistentid = info['dmap.persistentid']
15
- @id = info['dmap.itemid']
10
+ @size = args['daap.songsize']
11
+ @album = args[:album]
12
+ @name = args['dmap.itemname']
13
+ #@artist = args['daap.songartist']
14
+ @artist = args[:artist]
15
+ @format = args['daap.songformat']
16
+ @persistentid = args['dmap.persistentid']
17
+ @id = args['dmap.itemid']
16
18
  @daap = args[:daap]
17
19
  @db = args[:db]
18
20
  end
Binary file
@@ -0,0 +1,209 @@
1
+ ---
2
+ 27328526:
3
+ :album: Warnings / Promises
4
+ :size: 5916800
5
+ :artist: Idlewild
6
+ :persistentid: 27328526
7
+ :format: mp3
8
+ :name: I Want A Warning
9
+ :itemid: 27328526
10
+ 27328537:
11
+ :album: "Who Will Cut Our Hair When We're Gone?"
12
+ :size: 5741662
13
+ :artist: The Unicorns
14
+ :persistentid: 27328537
15
+ :format: mp3
16
+ :name: Tuff Luff
17
+ :itemid: 27328537
18
+ 27328521:
19
+ :album: Warnings / Promises
20
+ :size: 5617792
21
+ :artist: Idlewild
22
+ :persistentid: 27328521
23
+ :format: mp3
24
+ :name: "As If I Hadn't Slept"
25
+ :itemid: 27328521
26
+ 27328543:
27
+ :album: "Who Will Cut Our Hair When We're Gone?"
28
+ :size: 4681321
29
+ :artist: The Unicorns
30
+ :persistentid: 27328543
31
+ :format: mp3
32
+ :name: Ghost Mountain
33
+ :itemid: 27328543
34
+ 27328538:
35
+ :album: "Who Will Cut Our Hair When We're Gone?"
36
+ :size: 5805288
37
+ :artist: The Unicorns
38
+ :persistentid: 27328538
39
+ :format: mp3
40
+ :name: Sea Ghost
41
+ :itemid: 27328538
42
+ 27328527:
43
+ :album: Warnings / Promises
44
+ :size: 4224
45
+ :artist: Idlewild
46
+ :persistentid: 27328527
47
+ :format: mp3
48
+ :name: Hidden Track 2
49
+ :itemid: 27328527
50
+ 27328544:
51
+ :album: "Who Will Cut Our Hair When We're Gone?"
52
+ :size: 2535811
53
+ :artist: The Unicorns
54
+ :persistentid: 27328544
55
+ :format: mp3
56
+ :name: The Clap
57
+ :itemid: 27328544
58
+ 27328522:
59
+ :album: Warnings / Promises
60
+ :size: 6875264
61
+ :artist: Idlewild
62
+ :persistentid: 27328522
63
+ :format: mp3
64
+ :name: The Space Between All Things
65
+ :itemid: 27328522
66
+ 27328528:
67
+ :album: Warnings / Promises
68
+ :size: 5306496
69
+ :artist: Idlewild
70
+ :persistentid: 27328528
71
+ :format: mp3
72
+ :name: Too Long Awake
73
+ :itemid: 27328528
74
+ 27328523:
75
+ :album: Warnings / Promises
76
+ :size: 4825216
77
+ :artist: Idlewild
78
+ :persistentid: 27328523
79
+ :format: mp3
80
+ :name: Welcome Home
81
+ :itemid: 27328523
82
+ 27328534:
83
+ :album: "Who Will Cut Our Hair When We're Gone?"
84
+ :size: 2774011
85
+ :artist: The Unicorns
86
+ :persistentid: 27328534
87
+ :format: mp3
88
+ :name: Ready to Die
89
+ :itemid: 27328534
90
+ 27328545:
91
+ :album: "Who Will Cut Our Hair When We're Gone?"
92
+ :size: 7631889
93
+ :artist: The Unicorns
94
+ :persistentid: 27328545
95
+ :format: mp3
96
+ :name: Child Star
97
+ :itemid: 27328545
98
+ 27328540:
99
+ :album: "Who Will Cut Our Hair When We're Gone?"
100
+ :size: 4764396
101
+ :artist: The Unicorns
102
+ :persistentid: 27328540
103
+ :format: mp3
104
+ :name: Tuff Ghost
105
+ :itemid: 27328540
106
+ 27328529:
107
+ :album: Warnings / Promises
108
+ :size: 4864128
109
+ :artist: Idlewild
110
+ :persistentid: 27328529
111
+ :format: mp3
112
+ :name: Love Steals Us From Loneliness
113
+ :itemid: 27328529
114
+ 27328546:
115
+ :album: "Who Will Cut Our Hair When We're Gone?"
116
+ :size: 7356555
117
+ :artist: The Unicorns
118
+ :persistentid: 27328546
119
+ :format: mp3
120
+ :name: Inoculate the Innocuous
121
+ :itemid: 27328546
122
+ 27328524:
123
+ :album: Warnings / Promises
124
+ :size: 5765248
125
+ :artist: Idlewild
126
+ :persistentid: 27328524
127
+ :format: mp3
128
+ :name: Not Just Sometimes But Always
129
+ :itemid: 27328524
130
+ 27328535:
131
+ :album: "Who Will Cut Our Hair When We're Gone?"
132
+ :size: 2975312
133
+ :artist: The Unicorns
134
+ :persistentid: 27328535
135
+ :format: mp3
136
+ :name: "Let's Get Known"
137
+ :itemid: 27328535
138
+ 27328530:
139
+ :album: Warnings / Promises
140
+ :size: 5744768
141
+ :artist: Idlewild
142
+ :persistentid: 27328530
143
+ :format: mp3
144
+ :name: Disconnected
145
+ :itemid: 27328530
146
+ 27328541:
147
+ :album: "Who Will Cut Our Hair When We're Gone?"
148
+ :size: 4032487
149
+ :artist: The Unicorns
150
+ :persistentid: 27328541
151
+ :format: mp3
152
+ :name: Jellybones
153
+ :itemid: 27328541
154
+ 27328519:
155
+ :album: Warnings / Promises
156
+ :size: 5253248
157
+ :artist: Idlewild
158
+ :persistentid: 27328519
159
+ :format: mp3
160
+ :name: I Understand It
161
+ :itemid: 27328519
162
+ 27328547:
163
+ :album: "Who Will Cut Our Hair When We're Gone?"
164
+ :size: 4855761
165
+ :artist: The Unicorns
166
+ :persistentid: 27328547
167
+ :format: mp3
168
+ :name: I Was Born (A Unicorn)
169
+ :itemid: 27328547
170
+ 27328525:
171
+ :album: Warnings / Promises
172
+ :size: 5597312
173
+ :artist: Idlewild
174
+ :persistentid: 27328525
175
+ :format: mp3
176
+ :name: Blame It On Obvious Ways
177
+ :itemid: 27328525
178
+ 27328536:
179
+ :album: "Who Will Cut Our Hair When We're Gone?"
180
+ :size: 5871881
181
+ :artist: The Unicorns
182
+ :persistentid: 27328536
183
+ :format: mp3
184
+ :name: Les OS
185
+ :itemid: 27328536
186
+ 27328542:
187
+ :album: "Who Will Cut Our Hair When We're Gone?"
188
+ :size: 3216155
189
+ :artist: The Unicorns
190
+ :persistentid: 27328542
191
+ :format: mp3
192
+ :name: "I Don't Wanna Die"
193
+ :itemid: 27328542
194
+ 27328520:
195
+ :album: Warnings / Promises
196
+ :size: 5849216
197
+ :artist: Idlewild
198
+ :persistentid: 27328520
199
+ :format: mp3
200
+ :name: El Capitan
201
+ :itemid: 27328520
202
+ 27328531:
203
+ :album: Warnings / Promises
204
+ :size: 8157312
205
+ :artist: Idlewild
206
+ :persistentid: 27328531
207
+ :format: mp3
208
+ :name: Goodnight
209
+ :itemid: 27328531
@@ -0,0 +1,56 @@
1
+ require 'digest/md5'
2
+ require 'yaml'
3
+
4
+ file_dir = nil
5
+ if FileTest.exists?('test/data')
6
+ file_dir = 'test/data'
7
+ else
8
+ file_dir = 'data'
9
+ end
10
+ FILE_DIR = file_dir
11
+
12
+ File.open("#{FILE_DIR}/song_structure.txt", 'r') {|f| HASH = YAML.load(f.read) }
13
+ File.open("#{FILE_DIR}/song_data.txt", 'r') { |f| FILE_DATA = f.read }
14
+ SERVER = 'localhost'
15
+
16
+ module Net
17
+ class Container
18
+ attr_reader :header, :body
19
+
20
+ def initialize(args)
21
+ @header = args[:header]
22
+ @body = args[:body]
23
+ end
24
+ end
25
+
26
+ class HTTP
27
+ def self.new
28
+ allocate
29
+ end
30
+
31
+ def initialize
32
+ end
33
+
34
+ def self.start(*args)
35
+ Net::HTTP.new
36
+ end
37
+
38
+ def get(*args, &block)
39
+ md5 = Digest::MD5.new(args[0])
40
+ contents = nil
41
+ dir = nil
42
+ if FileTest.exists?('test/data')
43
+ dir = 'test/data/mt-daapd/'
44
+ else
45
+ dir = 'data/mt-daapd/'
46
+ end
47
+ File::open(dir + md5.to_s + ".txt" , "r") do |file|
48
+ contents = file.read
49
+ end
50
+ Container.new(:body => contents, :header => {
51
+ 'content-type' => 'dmap',
52
+ 'daap-server' => 'mock'
53
+ })
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,31 @@
1
+ module Net
2
+ module DAAP
3
+ class Client
4
+ def do_get(request, &block)
5
+ @log.debug("do_get called")
6
+ url = String.new('/' + request)
7
+ if @session_id
8
+ url += url =~ /\?/ ? "&" : "?"
9
+ url += "session-id=20"
10
+ end
11
+
12
+ @log.debug("Fetching url: #{url}")
13
+
14
+ res = nil
15
+ md5 = Digest::MD5.new(url)
16
+ File.open(md5.to_s + ".txt", "w") do |file|
17
+ res = @http_client.get(url, request_headers(url), nil, &block)
18
+ file.write res.body
19
+ end
20
+ @log.debug("Done Fetching url: #{url}")
21
+
22
+ content_type = res.header['content-type']
23
+ if request !~ /(?:\/items\/\d+\.|logout)/ && content_type !~ /dmap/
24
+ raise "Broken response"
25
+ end
26
+
27
+ res.body
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+ $:.unshift File.join(File.dirname(__FILE__), "..", "test")
3
+
4
+ require 'test/unit'
5
+ require 'net/daap'
6
+ require 'mock_server'
7
+
8
+ class DAAPCLientArtistTest < Test::Unit::TestCase
9
+ def setup
10
+ @daap = Net::DAAP::Client.new(SERVER)
11
+ @daap.connect
12
+ end
13
+
14
+ def teardown
15
+ @daap.disconnect
16
+ end
17
+
18
+ def test_artists
19
+ db = @daap.databases.first
20
+
21
+ album_songs = 0
22
+ db.albums.each { |a|
23
+ album_songs += a.songs.length
24
+ }
25
+ assert_equal(db.songs.length, album_songs)
26
+
27
+ artist_songs = 0
28
+ db.artists.each { |a|
29
+ artist_songs += a.songs.length
30
+ }
31
+ assert_equal(db.songs.length, artist_songs)
32
+ end
33
+ end
data/test/tc_client.rb CHANGED
@@ -1,119 +1,65 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+ $:.unshift File.join(File.dirname(__FILE__), "..", "test")
3
+
1
4
  require 'test/unit'
2
5
  require 'net/daap'
3
- require 'digest/md5'
6
+ require 'mock_server'
4
7
 
5
- class MyTest < Net::DAAP::Client
6
- def connect
7
- @dmap = Net::DAAP::DMAP.new(:daap => self)
8
- load_server_info
9
- @connected = 1
10
- @dsn
8
+ class DAAPClient_Test < Test::Unit::TestCase
9
+ def setup
10
+ @daap = Net::DAAP::Client.new(SERVER)
11
+ @daap.connect
11
12
  end
12
13
 
13
- def find_validator
14
+ def teardown
15
+ @daap.disconnect
14
16
  end
15
17
 
16
- def do_get(request)
17
- contents = nil
18
- md5 = Digest::MD5.new(request)
19
- File::open("data/mt-daapd/" + md5.to_s + ".txt", "r") do |file|
20
- contents = file.read
21
- end
22
- contents
18
+ def test_connect
19
+ daap = Net::DAAP::Client.new(SERVER)
20
+ dsn = daap.connect
21
+ assert_equal("Aaron's Music", dsn)
23
22
  end
24
- end
25
23
 
26
- class DAAPClient_Test < Test::Unit::TestCase
27
- def setup
28
- @daap = MyTest.new('localhost')
29
- @daap.connect
24
+ def test_connect_with_block
25
+ daap = Net::DAAP::Client.new(SERVER)
26
+ daap.connect do |dsn|
27
+ assert_equal("Aaron's Music", dsn)
28
+ end
30
29
  end
31
30
 
32
- def test_connect
33
- daap = MyTest.new('localhost')
34
- dsn = daap.connect
35
- assert_equal("apatterson", dsn)
31
+ def test_db_error
32
+ daap = Net::DAAP::Client.new(SERVER)
33
+ begin
34
+ daap.databases
35
+ rescue
36
+ assert(true, true)
37
+ end
36
38
  end
37
39
 
38
40
  def test_songs
39
41
  songs = @daap.databases[0].songs
40
42
  songs_hash = Hash.new
41
43
  songs.each do |song|
42
- songs_hash[song.id] = { :size => song.size, :album => song.album,
43
- :name => song.name, :artist => song.artist, :format => song.format,
44
+ songs_hash[song.id] = { :size => song.size, :album => song.album.to_s,
45
+ :name => song.name, :artist => song.artist.to_s, :format => song.format,
44
46
  :persistentid => song.persistentid, :itemid => song.id }
45
47
  end
46
48
 
47
- hash =
48
- {2327300=>{:itemid=>2327300, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4654199, :name=>"Myxomatosis (Judge, Jury & Executioner)", :persistentid=>2327300},
49
- 2327243=>{:itemid=>2327243, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>3723264, :name=>"Myxomatosis", :persistentid=>2327243},
50
- 2327281=>{:itemid=>2327281, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>5950405, :name=>"A Punch Up At A Wedding (No No No No No No No No)", :persistentid=>2327281},
51
- 2327234=>{:itemid=>2327234, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>4759552, :name=>"A Punch-Up At The Wedding", :persistentid=>2327234},
52
- 2327272=>{:itemid=>2327272, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>7673398, :name=>"Paranoid Android", :persistentid=>2327272},
53
- 2327253=>{:itemid=>2327253, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>3284376, :name=>"I will (Los Angeles version)", :persistentid=>2327253},
54
- 2327225=>{:itemid=>2327225, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>3190784, :name=>"2+2=5", :persistentid=>2327225},
55
- 2327301=>{:itemid=>2327301, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>6455593, :name=>"Backdrifts (Honeymoon Is Over)", :persistentid=>2327301},
56
- 2327282=>{:itemid=>2327282, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4037702, :name=>"Scatterbrain (As Dead As Leaves)", :persistentid=>2327282},
57
- 2327273=>{:itemid=>2327273, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>5236170, :name=>"Karma Police", :persistentid=>2327273},
58
- 2327311=>{:itemid=>2327311, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4030394, :name=>"A Wolf At The Door (It Girl. Rag Doll)", :persistentid=>2327311},
59
- 2327254=>{:itemid=>2327254, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>6443033, :name=>"Skttrbrain (Four Tet remix)", :persistentid=>2327254},
60
- 2327302=>{:itemid=>2327302, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>2393022, :name=>"I Will (No Man's Land)", :persistentid=>2327302},
61
- 2327245=>{:itemid=>2327245, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>5212004, :name=>"Gagging Order", :persistentid=>2327245},
62
- 2327283=>{:itemid=>2327283, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4833826, :name=>"A Wolf At The Door", :persistentid=>2327283},
63
- 2327226=>{:itemid=>2327226, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>4134912, :name=>"Sail To The Moon", :persistentid=>2327226},
64
- 2327264=>{:itemid=>2327264, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>2350164, :name=>"Fitter Happier", :persistentid=>2327264},
65
- 2327312=>{:itemid=>2327312, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>2868372, :name=>"I Will", :persistentid=>2327312},
66
- 2327246=>{:itemid=>2327246, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>5130084, :name=>"I am Citizen Insane", :persistentid=>2327246},
67
- 2327284=>{:itemid=>2327284, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4785551, :name=>"2 + 2 = 5", :persistentid=>2327284},
68
- 2327322=>{:itemid=>2327322, :album=>"I Might Be Wrong: Live Recordings", :format=>"mp3", :artist=>"Radiohead", :size=>5953983, :name=>"The National Anthem", :persistentid=>2327322},
69
- 2327227=>{:itemid=>2327227, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>3223552, :name=>"A Wolf At The Door", :persistentid=>2327227},
70
- 2327265=>{:itemid=>2327265, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>4616547, :name=>"Electioneering", :persistentid=>2327265},
71
- 2327303=>{:itemid=>2327303, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>6475455, :name=>"There There (The Boney King Of Nowhere)", :persistentid=>2327303},
72
- 2327294=>{:itemid=>2327294, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>7122152, :name=>"We Suck Young Blood", :persistentid=>2327294},
73
- 2327237=>{:itemid=>2327237, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>3229696, :name=>"Scatterbrain", :persistentid=>2327237},
74
- 2327247=>{:itemid=>2327247, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>3349578, :name=>"Fog. (Again) - Live", :persistentid=>2327247},
75
- 2327285=>{:itemid=>2327285, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>5170908, :name=>"Sail To The Moon (Brush The Cobwebs Of The Sky)", :persistentid=>2327285},
76
- 2327323=>{:itemid=>2327323, :album=>"I Might Be Wrong: Live Recordings", :format=>"mp3", :artist=>"Radiohead", :size=>6263793, :name=>"Dollars And Cents", :persistentid=>2327323},
77
- 2327228=>{:itemid=>2327228, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>3225600, :name=>"Go To Sleep", :persistentid=>2327228},
78
- 2327266=>{:itemid=>2327266, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>5691739, :name=>"Airbag", :persistentid=>2327266},
79
- 2327295=>{:itemid=>2327295, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>6240049, :name=>"Sit Down. Stand Up", :persistentid=>2327295},
80
- 2327314=>{:itemid=>2327314, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>6463866, :name=>"Where I End And You Begin", :persistentid=>2327314},
81
- 2327324=>{:itemid=>2327324, :album=>"I Might Be Wrong: Live Recordings", :format=>"mp3", :artist=>"Radiohead", :size=>5300405, :name=>"Idioteque", :persistentid=>2327324},
82
- 2327229=>{:itemid=>2327229, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>5179392, :name=>"There There", :persistentid=>2327229},
83
- 2327267=>{:itemid=>2327267, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>5707428, :name=>"Climbing Up The Walls", :persistentid=>2327267},
84
- 2327305=>{:itemid=>2327305, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4840722, :name=>"Scatterbrain", :persistentid=>2327305},
85
- 2327248=>{:itemid=>2327248, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>4547728, :name=>"I Am A Wicked Child", :persistentid=>2327248},
86
- 2327286=>{:itemid=>2327286, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>4836960, :name=>"Go To Sleep", :persistentid=>2327286},
87
- 2327258=>{:itemid=>2327258, :album=>"2+2=5 CD's", :format=>"mp3", :artist=>"Radiohead", :size=>4930333, :name=>"Remyxomatosis", :persistentid=>2327258},
88
- 2327315=>{:itemid=>2327315, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>3990668, :name=>"2+2=5 (The Lukewarm)", :persistentid=>2327315},
89
- 2327230=>{:itemid=>2327230, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>5163008, :name=>"Backdrifts", :persistentid=>2327230},
90
- 2327268=>{:itemid=>2327268, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>5299397, :name=>"Exit Music (For A Film)", :persistentid=>2327268},
91
- 2327249=>{:itemid=>2327249, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>7450123, :name=>"Remyxomatosis (Cristian Vogel RMX)", :persistentid=>2327249},
92
- 2327287=>{:itemid=>2327287, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>7767272, :name=>"There There", :persistentid=>2327287},
93
- 2327325=>{:itemid=>2327325, :album=>"I Might Be Wrong: Live Recordings", :format=>"mp3", :artist=>"Radiohead", :size=>4552253, :name=>"Like Spinning Plates", :persistentid=>2327325},
94
- 2327240=>{:itemid=>2327240, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>1912832, :name=>"I Will", :persistentid=>2327240},
95
- 2327316=>{:itemid=>2327316, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>5581763, :name=>"Myxomatosis", :persistentid=>2327316},
96
- 2327221=>{:itemid=>2327221, :album=>"There there", :format=>"mp3", :artist=>"Radiohead", :size=>5777028, :name=>"Where bluebirds fly.", :persistentid=>2327221},
97
- 2327259=>{:itemid=>2327259, :album=>"2+2=5 CD's", :format=>"mp3", :artist=>"Radiohead", :size=>7425967, :name=>"There There (demo)", :persistentid=>2327259},
98
- 2327297=>{:itemid=>2327297, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>5389293, :name=>"Where I End And You Begin (The Sky Is Falling In)", :persistentid=>2327297},
99
- 2327269=>{:itemid=>2327269, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>5195935, :name=>"Lucky", :persistentid=>2327269},
100
- 2327307=>{:itemid=>2327307, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>7137199, :name=>"A Punchup At A Wedding", :persistentid=>2327307},
101
- 2327250=>{:itemid=>2327250, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>11222064, :name=>"There there (First demo)", :persistentid=>2327250},
102
- 2327231=>{:itemid=>2327231, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>4749312, :name=>"We Suck Young Blood", :persistentid=>2327231},
103
- 2327260=>{:itemid=>2327260, :album=>"2+2=5 CD's", :format=>"mp3", :artist=>"Radiohead", :size=>4263688, :name=>"Skttrbrain (Four Tet RMX)", :persistentid=>2327260},
104
- 2327298=>{:itemid=>2327298, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>5937853, :name=>"We Suck Young Blood (Your Time Is Up)", :persistentid=>2327298},
105
- 2327251=>{:itemid=>2327251, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>5786001, :name=>"Paperbag Writer", :persistentid=>2327251},
106
- 2327232=>{:itemid=>2327232, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>3393536, :name=>"The Gloaming", :persistentid=>2327232},
107
- 2327270=>{:itemid=>2327270, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>6494227, :name=>"The Tourist", :persistentid=>2327270},
108
- 2327280=>{:itemid=>2327280, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>6201806, :name=>"Sail To The Moon", :persistentid=>2327280},
109
- 2327261=>{:itemid=>2327261, :album=>"2+2=5 CD's", :format=>"mp3", :artist=>"Radiohead", :size=>2158009, :name=>"I will (LA version)", :persistentid=>2327261},
110
- 2327299=>{:itemid=>2327299, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>5089617, :name=>"The Gloaming", :persistentid=>2327299},
111
- 2327242=>{:itemid=>2327242, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>4311040, :name=>"Where I End And You Begin", :persistentid=>2327242},
112
- 2327271=>{:itemid=>2327271, :album=>"OK Computer", :format=>"mp3", :artist=>"Radiohead", :size=>5989015, :name=>"Let Down", :persistentid=>2327271},
113
- 2327233=>{:itemid=>2327233, :album=>"Hail To The Theif", :format=>"mp3", :artist=>"Radiohead", :size=>4161536, :name=>"Sit Down, Stand Up", :persistentid=>2327233},
114
- 2327252=>{:itemid=>2327252, :album=>"Radiohead - HTTT Era B-Sides", :format=>"m4a", :artist=>"Radiohead", :size=>6588253, :name=>"Where Bluebirds Fly", :persistentid=>2327252},
115
- 2327290=>{:itemid=>2327290, :album=>"Hail To The Thief", :format=>"mp3", :artist=>"Radiohead", :size=>7743448, :name=>"Backdrifts", :persistentid=>2327290}}
116
- assert_equal(hash, songs_hash)
49
+ assert_equal(HASH, songs_hash)
50
+ end
51
+
52
+ def test_songs_with_block
53
+ @daap.databases do |db|
54
+ songs_hash = Hash.new
55
+ db.songs do |song|
56
+ songs_hash[song.id] = { :size => song.size, :album => song.album.to_s,
57
+ :name => song.name, :artist => song.artist.to_s, :format => song.format,
58
+ :persistentid => song.persistentid, :itemid => song.id }
59
+ end
60
+
61
+ assert_equal(HASH, songs_hash)
62
+ end
117
63
  end
118
64
 
119
65
  def test_databases
@@ -121,28 +67,13 @@ class DAAPClient_Test < Test::Unit::TestCase
121
67
  assert(true, @daap.databases.length == 1)
122
68
  db = @daap.databases[0]
123
69
  assert_equal(1, db.persistentid)
124
- assert_equal('apatterson', db.name)
125
- assert_equal(4, db.containercount)
70
+ assert_equal('Aaron\'s Music', db.name)
71
+ assert_equal(3, db.containercount)
126
72
  assert_equal(1, db.id)
127
- assert_equal(68, db.itemcount)
128
- assert_equal(68, db.songs.length)
73
+ assert_equal(26, db.itemcount)
74
+ assert_equal(26, db.songs.length)
129
75
  assert(true, db.songs.length == db.itemcount)
130
- assert_equal(4, db.playlists.length)
76
+ assert_equal(3, db.playlists.length)
131
77
  assert(true, db.playlists.length == db.containercount)
132
-
133
- #@daap.databases.each do |db|
134
- # puts "All songs in the database"
135
- # db.songs.each do |song|
136
- # #puts "#{song.artist} - #{song.name}"
137
- # end
138
- #
139
- # puts "Songs for each playlist"
140
- # db.playlists.each do |pl|
141
- # puts "Playlist name: #{pl.name}"
142
- # pl.songs.each do |song|
143
- # #puts "#{song.artist} - #{song.name}"
144
- # end
145
- # end
146
- #end
147
78
  end
148
79
  end