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
@@ -1,182 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>File: README</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="fileHeader">
50
- <h1>README</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>README
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Fri Dec 16 13:16:07 PST 2005</td>
60
- </tr>
61
- </table>
62
- </div>
63
- <!-- banner header -->
64
-
65
- <div id="bodyContent">
66
-
67
-
68
-
69
- <div id="contextContent">
70
-
71
- <div id="description">
72
- <h1><a href="../classes/Net/DAAP.html">Net::DAAP</a></h1>
73
- <p>
74
- This library is used for browsing iTunes DAAP servers.
75
- </p>
76
- <p>
77
- Most of this is based off the work in the perl version by Richard Clamp
78
- which can be found here:
79
- </p>
80
- <p>
81
- <a href="http://search.cpan.org/~rclamp">search.cpan.org/~rclamp</a>/
82
- </p>
83
- <p>
84
- Ruby version is by Aaron Patterson &lt;aaronp@rubyforge.org&gt;
85
- </p>
86
- <h2>Installation</h2>
87
- <p>
88
- Make sure that Digest::M4P is installed before using this package.
89
- Digest::M4P is available on the daap client ruby forge site:
90
- </p>
91
- <p>
92
- <a
93
- href="http://rubyforge.org/frs/?group_id=1155">rubyforge.org/frs/?group_id=1155</a>
94
- </p>
95
- <p>
96
- Digest::M4P has not been turned in to a Ruby gem as of this writing.
97
- </p>
98
- <p>
99
- After that, just install the gem:
100
- </p>
101
- <pre>
102
- sudo gem install daapclient
103
- </pre>
104
- <p>
105
- Also, check out the project page:
106
- </p>
107
- <p>
108
- <a
109
- href="http://rubyforge.org/projects/daapclient">rubyforge.org/projects/daapclient</a>
110
- </p>
111
- <h2>Example Usage</h2>
112
- <pre>
113
- require 'net/daap'
114
- require 'fileutils'
115
-
116
- daap = Net::DAAP::Client.new('localhost')
117
-
118
- daap.connect do |dsn|
119
- daap.databases do |db|
120
- puts &quot;All songs in the database&quot;
121
- db.songs do |song|
122
- filename = &quot;#{song.artist} - #{song.name}.#{song.format}&quot;
123
- directory = &quot;db/#{song.album}&quot;
124
- FileUtils::mkdir_p(directory)
125
-
126
- File.open(&quot;#{directory}/#{filename}&quot;, &quot;w&quot;) do |f|
127
- song.get { |str| f.write str }
128
- end
129
- end
130
- end
131
- end
132
- </pre>
133
- <h2>Acknowledgements</h2>
134
- <p>
135
- The library is mostly a port of the Perl library, and owes most of its
136
- communication logic to the original Perl version by Richard Clamp.
137
- </p>
138
- <h2>Author</h2>
139
- <p>
140
- This Ruby version is Copyright &#169; Aaron Patterson 2005
141
- </p>
142
- <p>
143
- It also comes with a shameless plug for employment coding Ruby, my most
144
- favorite language! ;-)
145
- </p>
146
- <h2>License</h2>
147
- <p>
148
- This library is distributed under the GPL. Please see the LICENSE file.
149
- </p>
150
-
151
- </div>
152
-
153
-
154
- </div>
155
-
156
-
157
- </div>
158
-
159
-
160
- <!-- if includes -->
161
-
162
- <div id="section">
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
- <!-- if method_list -->
172
-
173
-
174
- </div>
175
-
176
-
177
- <div id="validator-badges">
178
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
179
- </div>
180
-
181
- </body>
182
- </html>
@@ -1,101 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>File: database.rb</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="fileHeader">
50
- <h1>database.rb</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>lib/net/daap/database.rb
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Wed Dec 07 15:25:52 PST 2005</td>
60
- </tr>
61
- </table>
62
- </div>
63
- <!-- banner header -->
64
-
65
- <div id="bodyContent">
66
-
67
-
68
-
69
- <div id="contextContent">
70
-
71
-
72
-
73
- </div>
74
-
75
-
76
- </div>
77
-
78
-
79
- <!-- if includes -->
80
-
81
- <div id="section">
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
- <!-- if method_list -->
91
-
92
-
93
- </div>
94
-
95
-
96
- <div id="validator-badges">
97
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
- </div>
99
-
100
- </body>
101
- </html>
@@ -1,101 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>File: dmap.rb</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="fileHeader">
50
- <h1>dmap.rb</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>lib/net/daap/dmap.rb
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Fri Dec 09 14:45:05 PST 2005</td>
60
- </tr>
61
- </table>
62
- </div>
63
- <!-- banner header -->
64
-
65
- <div id="bodyContent">
66
-
67
-
68
-
69
- <div id="contextContent">
70
-
71
-
72
-
73
- </div>
74
-
75
-
76
- </div>
77
-
78
-
79
- <!-- if includes -->
80
-
81
- <div id="section">
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
- <!-- if method_list -->
91
-
92
-
93
- </div>
94
-
95
-
96
- <div id="validator-badges">
97
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
- </div>
99
-
100
- </body>
101
- </html>
@@ -1,101 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>File: playlist.rb</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="fileHeader">
50
- <h1>playlist.rb</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>lib/net/daap/playlist.rb
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Wed Dec 07 15:25:52 PST 2005</td>
60
- </tr>
61
- </table>
62
- </div>
63
- <!-- banner header -->
64
-
65
- <div id="bodyContent">
66
-
67
-
68
-
69
- <div id="contextContent">
70
-
71
-
72
-
73
- </div>
74
-
75
-
76
- </div>
77
-
78
-
79
- <!-- if includes -->
80
-
81
- <div id="section">
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
- <!-- if method_list -->
91
-
92
-
93
- </div>
94
-
95
-
96
- <div id="validator-badges">
97
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
- </div>
99
-
100
- </body>
101
- </html>