rbrainz 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +7 -1
- data/LICENSE +1 -1
- data/README +1 -1
- data/doc/README.rdoc +2 -2
- data/lib/rbrainz/core_ext/net_http_digest.rb +9 -5
- data/lib/rbrainz/model/release_event.rb +2 -1
- data/lib/rbrainz/model/taggable.rb +6 -1
- data/lib/rbrainz/version.rb +2 -2
- data/lib/rbrainz/webservice/includes.rb +9 -9
- data/lib/rbrainz/webservice/mbxml.rb +23 -2
- data/lib/rbrainz/webservice/webservice.rb +2 -1
- data/test/test_mbxml.rb +12 -1
- data/test/test_query.rb +14 -9
- data/test/test_track.rb +2 -2
- metadata +131 -128
data/CHANGES
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
= Changelog
|
2
|
+
== 0.5.2 (2011-04-29)
|
3
|
+
* BUG: Fixed HTTP Digest authentication according to RFC 2617
|
4
|
+
* BUG: Fixed include parameters user-tags and user-ratings
|
5
|
+
* BUG: Fixed parser warning in tests
|
6
|
+
* NEW: Support user tags
|
7
|
+
* NEW: Added DCC as media format
|
2
8
|
|
3
9
|
== 0.5.1 (2009-08-04)
|
4
10
|
* BUG: Fixed querying for release groups
|
@@ -80,4 +86,4 @@
|
|
80
86
|
== 0.1.0 (2007-05-23)
|
81
87
|
* Initial release
|
82
88
|
|
83
|
-
$Id: CHANGES
|
89
|
+
$Id: CHANGES 322 2011-04-28 20:16:42Z phw $
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
RBrainz is Copyright (c) 2007-
|
1
|
+
RBrainz is Copyright (c) 2007-2011 Philipp Wolfer and 2007 Nigel Graham.
|
2
2
|
|
3
3
|
Redistribution and use in source and binary forms, with or without
|
4
4
|
modification, are permitted provided that the following conditions
|
data/README
CHANGED
@@ -7,6 +7,6 @@ To generate the complete RBrainz documentation run
|
|
7
7
|
|
8
8
|
The documentation will be stored in doc/api.
|
9
9
|
|
10
|
-
RBrainz is Copyright (c) 2007-
|
10
|
+
RBrainz is Copyright (c) 2007-2011 Philipp Wolfer and 2007 Nigel Graham.
|
11
11
|
It is free softare distributed under a BSD style license. See
|
12
12
|
LICENSE for details.
|
data/doc/README.rdoc
CHANGED
@@ -96,8 +96,8 @@ RBrainz bug tracker[http://rubyforge.org/tracker/?group_id=3677].
|
|
96
96
|
* Nigel Graham
|
97
97
|
|
98
98
|
== License
|
99
|
-
RBrainz is Copyright (c) 2007-
|
99
|
+
RBrainz is Copyright (c) 2007-2011 Philipp Wolfer and 2007 Nigel Graham.
|
100
100
|
It is free softare distributed under a BSD style license. See
|
101
101
|
LICENSE[link:files/LICENSE.html] for details.
|
102
102
|
|
103
|
-
$Id: README.rdoc
|
103
|
+
$Id: README.rdoc 322 2011-04-28 20:16:42Z phw $
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: net_http_digest.rb
|
2
|
+
# $Id: net_http_digest.rb 319 2011-04-19 20:49:49Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Nigel Graham (mailto:nigel_graham@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -13,7 +13,7 @@ require 'net/http'
|
|
13
13
|
|
14
14
|
module Net # :nodoc:
|
15
15
|
module HTTPHeader # :nodoc:
|
16
|
-
@@nonce_count =
|
16
|
+
@@nonce_count = 0
|
17
17
|
CNONCE = Digest::MD5.new.update("%x" % (Time.now.to_i + rand(65535))).hexdigest
|
18
18
|
|
19
19
|
def select_auth(user,password,response)
|
@@ -59,15 +59,18 @@ module Net # :nodoc:
|
|
59
59
|
params = {}
|
60
60
|
$2.gsub(/(\w+)="(.*?)"/) { params[$1] = $2 }
|
61
61
|
|
62
|
+
qop = 'auth' if
|
63
|
+
params['qop'] and params['qop'].split(',').include?('auth')
|
64
|
+
|
62
65
|
a_1 = "#{user}:#{params['realm']}:#{password}"
|
63
66
|
a_2 = "#{@method}:#{@path}"
|
64
67
|
request_digest = ''
|
65
68
|
request_digest << Digest::MD5.new.update(a_1).hexdigest
|
66
69
|
request_digest << ':' << params['nonce']
|
67
|
-
if
|
70
|
+
if qop
|
68
71
|
request_digest << ':' << ('%08x' % @@nonce_count)
|
69
72
|
request_digest << ':' << CNONCE
|
70
|
-
request_digest << ':' <<
|
73
|
+
request_digest << ':' << qop
|
71
74
|
end
|
72
75
|
request_digest << ':' << Digest::MD5.new.update(a_2).hexdigest
|
73
76
|
|
@@ -75,7 +78,7 @@ module Net # :nodoc:
|
|
75
78
|
header << "Digest username=\"#{user}\""
|
76
79
|
header << "realm=\"#{params['realm']}\""
|
77
80
|
|
78
|
-
header << "qop=#{
|
81
|
+
header << "qop=#{qop}" if qop
|
79
82
|
|
80
83
|
header << "algorithm=MD5"
|
81
84
|
header << "uri=\"#{@path}\""
|
@@ -83,6 +86,7 @@ module Net # :nodoc:
|
|
83
86
|
header << "nc=#{'%08x' % @@nonce_count}" if params['qop']
|
84
87
|
header << "cnonce=\"#{CNONCE}\"" if params['qop']
|
85
88
|
header << "response=\"#{Digest::MD5.new.update(request_digest).hexdigest}\""
|
89
|
+
header << "opaque=\"#{params['opaque']}\"" if params['opaque']
|
86
90
|
|
87
91
|
return header
|
88
92
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: release_event.rb
|
2
|
+
# $Id: release_event.rb 295 2009-08-25 14:32:31Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -40,6 +40,7 @@ module MusicBrainz
|
|
40
40
|
FORMAT_DIGITAL = NS_MMD_1 + 'Digital'
|
41
41
|
FORMAT_WAX_CYLINDER = NS_MMD_1 + 'WaxCylinder'
|
42
42
|
FORMAT_PIANO_ROLL = NS_MMD_1 + 'PianoRoll'
|
43
|
+
FORMAT_DCC = NS_MMD_1 + 'DCC'
|
43
44
|
FORMAT_OTHER = NS_MMD_1 + 'Other'
|
44
45
|
|
45
46
|
# The country in which an album was released.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: taggable.rb
|
2
|
+
# $Id: taggable.rb 321 2011-04-19 22:04:41Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2009, Philipp Wolfer
|
@@ -20,6 +20,11 @@ module MusicBrainz
|
|
20
20
|
def tags
|
21
21
|
@tags ||= Collection.new
|
22
22
|
end
|
23
|
+
|
24
|
+
# Returns a Collection of Tag objects assigned to this entity by the current user.
|
25
|
+
def user_tags
|
26
|
+
@user_tags ||= Collection.new
|
27
|
+
end
|
23
28
|
|
24
29
|
end
|
25
30
|
|
data/lib/rbrainz/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: version.rb
|
2
|
+
# $Id: version.rb 322 2011-04-28 20:16:42Z phw $
|
3
3
|
#
|
4
4
|
# Version information.
|
5
5
|
#
|
@@ -11,6 +11,6 @@
|
|
11
11
|
module MusicBrainz
|
12
12
|
|
13
13
|
# The version of the RBrainz library.
|
14
|
-
RBRAINZ_VERSION = '0.5.
|
14
|
+
RBRAINZ_VERSION = '0.5.2'
|
15
15
|
|
16
16
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: includes.rb
|
2
|
+
# $Id: includes.rb 320 2011-04-19 21:42:11Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -88,9 +88,9 @@ module MusicBrainz
|
|
88
88
|
@parameters << 'discs' if includes[:discs]
|
89
89
|
@parameters << 'labels' if includes[:labels]
|
90
90
|
@parameters << 'tags' if includes[:tags]
|
91
|
-
@parameters << '
|
91
|
+
@parameters << 'user-tags' if includes[:user_tags]
|
92
92
|
@parameters << 'ratings' if includes[:ratings]
|
93
|
-
@parameters << '
|
93
|
+
@parameters << 'user-ratings' if includes[:user_ratings]
|
94
94
|
|
95
95
|
includes[:releases].each {|release_type|
|
96
96
|
@parameters << 'sa-' + Utils.remove_namespace(release_type.to_s)
|
@@ -166,9 +166,9 @@ module MusicBrainz
|
|
166
166
|
@parameters << 'url-rels' if includes[:url_rels]
|
167
167
|
@parameters << 'track-level-rels' if includes[:track_level_rels]
|
168
168
|
@parameters << 'tags' if includes[:tags]
|
169
|
-
@parameters << '
|
169
|
+
@parameters << 'user-tags' if includes[:user_tags]
|
170
170
|
@parameters << 'ratings' if includes[:ratings]
|
171
|
-
@parameters << '
|
171
|
+
@parameters << 'user-ratings' if includes[:user_ratings]
|
172
172
|
end
|
173
173
|
|
174
174
|
end
|
@@ -206,9 +206,9 @@ module MusicBrainz
|
|
206
206
|
@parameters << 'label-rels' if includes[:label_rels]
|
207
207
|
@parameters << 'url-rels' if includes[:url_rels]
|
208
208
|
@parameters << 'tags' if includes[:tags]
|
209
|
-
@parameters << '
|
209
|
+
@parameters << 'user-tags' if includes[:user_tags]
|
210
210
|
@parameters << 'ratings' if includes[:ratings]
|
211
|
-
@parameters << '
|
211
|
+
@parameters << 'user-ratings' if includes[:user_ratings]
|
212
212
|
end
|
213
213
|
|
214
214
|
end
|
@@ -239,9 +239,9 @@ module MusicBrainz
|
|
239
239
|
@parameters << 'label-rels' if includes[:label_rels]
|
240
240
|
@parameters << 'url-rels' if includes[:url_rels]
|
241
241
|
@parameters << 'tags' if includes[:tags]
|
242
|
-
@parameters << '
|
242
|
+
@parameters << 'user-tags' if includes[:user_tags]
|
243
243
|
@parameters << 'ratings' if includes[:ratings]
|
244
|
-
@parameters << '
|
244
|
+
@parameters << 'user-ratings' if includes[:user_ratings]
|
245
245
|
end
|
246
246
|
|
247
247
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: mbxml.rb
|
2
|
+
# $Id: mbxml.rb 321 2011-04-19 22:04:41Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -127,6 +127,7 @@ module MusicBrainz
|
|
127
127
|
read_relationships(node, artist)
|
128
128
|
read_ratings(node, artist)
|
129
129
|
read_tag_list(node.elements['tag-list'], artist.tags)
|
130
|
+
read_user_tag_list(node.elements['user-tag-list'], artist.user_tags)
|
130
131
|
if node.attributes['type']
|
131
132
|
artist.type = Utils.add_namespace(node.attributes['type'])
|
132
133
|
end
|
@@ -214,6 +215,7 @@ module MusicBrainz
|
|
214
215
|
read_relationships(node, release)
|
215
216
|
read_ratings(node, release)
|
216
217
|
read_tag_list(node.elements['tag-list'], release.tags)
|
218
|
+
read_user_tag_list(node.elements['user-tag-list'], release.user_tags)
|
217
219
|
release.title = node.elements['title'].text if node.elements['title']
|
218
220
|
release.asin = node.elements['asin'].text if node.elements['asin']
|
219
221
|
release.artist = create_artist(node.elements['artist']) if node.elements['artist']
|
@@ -265,6 +267,7 @@ module MusicBrainz
|
|
265
267
|
read_relationships(node, track)
|
266
268
|
read_ratings(node, track)
|
267
269
|
read_tag_list(node.elements['tag-list'], track.tags)
|
270
|
+
read_user_tag_list(node.elements['user-tag-list'], track.user_tags)
|
268
271
|
track.title = node.elements['title'].text if node.elements['title']
|
269
272
|
track.duration = node.elements['duration'].text.to_i if node.elements['duration']
|
270
273
|
track.artist = create_artist(node.elements['artist']) if node.elements['artist']
|
@@ -304,6 +307,7 @@ module MusicBrainz
|
|
304
307
|
read_relationships(node, label)
|
305
308
|
read_ratings(node, label)
|
306
309
|
read_tag_list(node.elements['tag-list'], label.tags)
|
310
|
+
read_user_tag_list(node.elements['user-tag-list'], label.user_tags)
|
307
311
|
if node.attributes['type']
|
308
312
|
label.type = Utils.add_namespace(node.attributes['type'])
|
309
313
|
end
|
@@ -357,13 +361,30 @@ module MusicBrainz
|
|
357
361
|
end
|
358
362
|
end
|
359
363
|
|
360
|
-
#
|
364
|
+
# Iterate over a list of tags and add them to the target collection.
|
365
|
+
#
|
366
|
+
# The node must be of the type <em>tag-list</em>.
|
367
|
+
def read_user_tag_list(list_node, target_collection, read_scores=false)
|
368
|
+
read_list(list_node, target_collection, 'user-tag', read_scores) do |a|
|
369
|
+
yield a if block_given?
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
# Create a +Tag+ object from the given tag node.
|
361
374
|
def create_tag(node)
|
362
375
|
tag = @factory.new_tag
|
363
376
|
tag.text = node.text
|
364
377
|
tag.count = node.attributes['count'].to_i if node.attributes['count']
|
365
378
|
return tag
|
366
379
|
end
|
380
|
+
|
381
|
+
# Create a +Tag+ object from the given user-tag node.
|
382
|
+
def create_user_tag(node)
|
383
|
+
tag = @factory.new_tag
|
384
|
+
tag.text = node.text
|
385
|
+
tag.count = 1
|
386
|
+
return tag
|
387
|
+
end
|
367
388
|
|
368
389
|
# Iterate over a list of release events and add them to the target collection.
|
369
390
|
#
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: webservice.rb
|
1
|
+
# $Id: webservice.rb 319 2011-04-19 20:49:49Z phw $
|
2
2
|
#
|
3
3
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
4
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -187,6 +187,7 @@ module MusicBrainz
|
|
187
187
|
|
188
188
|
def create_connection(uri)
|
189
189
|
connection = Net::HTTP.new(uri.host, uri.port, @proxy[:host], @proxy[:port])
|
190
|
+
#connection.set_debug_output $stderr
|
190
191
|
set_connection_timeouts(connection)
|
191
192
|
return connection
|
192
193
|
end
|
data/test/test_mbxml.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: test_mbxml.rb
|
2
|
+
# $Id: test_mbxml.rb 321 2011-04-19 22:04:41Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -101,6 +101,9 @@ class TestMBXML < Test::Unit::TestCase
|
|
101
101
|
assert_equal 'romantic era', artist.tags[2].text
|
102
102
|
assert_equal 40, artist.tags[2].count
|
103
103
|
assert_equal 'composer', artist.tags[3].text
|
104
|
+
assert_equal 2, artist.user_tags.size
|
105
|
+
assert_equal 'classical', artist.user_tags[0].text
|
106
|
+
assert_equal 'russian', artist.user_tags[1].text
|
104
107
|
assert_equal 120, artist.tags[3].count
|
105
108
|
assert_equal false, artist.rating.empty?
|
106
109
|
assert_equal 4.5, artist.rating.value
|
@@ -330,6 +333,9 @@ class TestMBXML < Test::Unit::TestCase
|
|
330
333
|
assert_equal 40, release.tags[2].count
|
331
334
|
assert_equal 'dylan', release.tags[3].text
|
332
335
|
assert_equal 4, release.tags[3].count
|
336
|
+
assert_equal 2, release.user_tags.size
|
337
|
+
assert_equal 'rock', release.user_tags[0].text
|
338
|
+
assert_equal 'foo', release.user_tags[1].text
|
333
339
|
assert_equal false, release.rating.empty?
|
334
340
|
assert_equal 4.5, release.rating.value
|
335
341
|
assert_equal 10, release.rating.count
|
@@ -562,6 +568,8 @@ class TestMBXML < Test::Unit::TestCase
|
|
562
568
|
assert_equal 'Silent All These Years', track.title
|
563
569
|
assert_equal 253466, track.duration
|
564
570
|
assert_equal 0, track.tags.size
|
571
|
+
assert_equal 1, track.user_tags.size
|
572
|
+
assert_equal 'foo', track.user_tags[0].text
|
565
573
|
assert_equal false, track.rating.empty?
|
566
574
|
assert_equal 4.5, track.rating.value
|
567
575
|
assert_equal 10, track.rating.count
|
@@ -637,6 +645,9 @@ class TestMBXML < Test::Unit::TestCase
|
|
637
645
|
assert_equal 'american', label.tags[0].text
|
638
646
|
assert_equal 'jazz', label.tags[1].text
|
639
647
|
assert_equal 'blues', label.tags[2].text
|
648
|
+
assert_equal 2, label.user_tags.size
|
649
|
+
assert_equal 'american', label.user_tags[0].text
|
650
|
+
assert_equal 'jazz', label.user_tags[1].text
|
640
651
|
assert_equal false, label.rating.empty?
|
641
652
|
assert_equal 4.5, label.rating.value
|
642
653
|
assert_equal 10, label.rating.count
|
data/test/test_query.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: test_query.rb
|
2
|
+
# $Id: test_query.rb 313 2010-06-14 21:07:07Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
@@ -65,14 +65,19 @@ class TestQuery < Test::Unit::TestCase
|
|
65
65
|
assert_equal 'The Cure', entity.title
|
66
66
|
end
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
68
|
+
def test_get_release_groups
|
69
|
+
filter = Webservice::ReleaseGroupFilter.new(:artist=>'Circulatory System')
|
70
|
+
collection = @query.get_release_groups(filter)
|
71
|
+
assert collection.is_a?(Model::Collection)
|
72
|
+
assert_equal 3, collection.size
|
73
|
+
collection.entities.each {|e| assert e.is_a?(Model::ReleaseGroup) }
|
74
|
+
first_group = collection.entities.first
|
75
|
+
assert_equal 'Signal Morning', first_group.title
|
76
|
+
assert_equal 1, first_group.types.size
|
77
|
+
assert_equal Model::ReleaseGroup::TYPE_ALBUM, first_group.types.first
|
78
|
+
assert_equal 'Circulatory System', first_group.artist.name
|
79
|
+
assert_equal '2dea8a55-623b-42bb-bda3-9fb784018b40', first_group.artist.id.uuid
|
80
|
+
end
|
76
81
|
|
77
82
|
def test_get_release_with_includes
|
78
83
|
id = '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5'
|
data/test/test_track.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# $Id: test_track.rb
|
2
|
+
# $Id: test_track.rb 303 2010-01-19 16:32:29Z phw $
|
3
3
|
#
|
4
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
5
5
|
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
@@ -110,7 +110,7 @@ class TestTrack < Test::Unit::TestCase
|
|
110
110
|
# Many releases can be added
|
111
111
|
def test_add_and_remove_releases
|
112
112
|
track = Model::Track.new
|
113
|
-
assert track.releases.is_a?
|
113
|
+
assert track.releases.is_a?(Model::Collection)
|
114
114
|
assert_equal 0, track.releases.size
|
115
115
|
assert_nothing_raised {track.releases << @releases[0]}
|
116
116
|
assert_equal 1, track.releases.size
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbrainz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 15
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
- 2
|
10
|
+
version: 0.5.2
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Philipp Wolfer
|
@@ -10,11 +16,11 @@ autorequire:
|
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
18
|
|
13
|
-
date:
|
19
|
+
date: 2011-04-28 00:00:00 +02:00
|
14
20
|
default_executable:
|
15
21
|
dependencies: []
|
16
22
|
|
17
|
-
description: RBrainz is a Ruby client library to access the MusicBrainz XML
|
23
|
+
description: " RBrainz is a Ruby client library to access the MusicBrainz XML\n web service. RBrainz supports the MusicBrainz XML Metadata Version 1.2,\n including support for labels and extended release events.\n \n RBrainz follows the design of python-musicbrainz2, the reference\n implementation for a MusicBrainz client library. Developers used to\n python-musicbrainz2 should already know most of RBrainz' interface.\n However, RBrainz differs from python-musicbrainz2 wherever it makes\n the library more Ruby like or easier to use.\n"
|
18
24
|
email: phw@rubyforge.org
|
19
25
|
executables: []
|
20
26
|
|
@@ -33,183 +39,180 @@ files:
|
|
33
39
|
- CHANGES
|
34
40
|
- setup.rb
|
35
41
|
- doc/README.rdoc
|
36
|
-
- examples/
|
37
|
-
- examples/getreleasegroup.rb
|
38
|
-
- examples/searchcdstubs.rb
|
39
|
-
- examples/searchtracks.rb
|
42
|
+
- examples/searchreleases.rb
|
40
43
|
- examples/getuser.rb
|
41
|
-
- examples/
|
42
|
-
- examples/
|
44
|
+
- examples/tag.rb
|
45
|
+
- examples/submit_isrcs.rb
|
46
|
+
- examples/searchtracks.rb
|
47
|
+
- examples/getartist.rb
|
43
48
|
- examples/getrelease.rb
|
49
|
+
- examples/searchcdstubs.rb
|
50
|
+
- examples/searchartists.rb
|
51
|
+
- examples/rate.rb
|
52
|
+
- examples/searchreleasegroups.rb
|
44
53
|
- examples/gettrack.rb
|
45
|
-
- examples/
|
46
|
-
- examples/
|
47
|
-
- examples/submit_isrcs.rb
|
54
|
+
- examples/getlabel.rb
|
55
|
+
- examples/getreleasegroup.rb
|
48
56
|
- examples/searchlabels.rb
|
49
|
-
-
|
50
|
-
-
|
51
|
-
- lib/rbrainz/
|
57
|
+
- lib/rbrainz/webservice/filter.rb
|
58
|
+
- lib/rbrainz/webservice/webservice.rb
|
59
|
+
- lib/rbrainz/webservice/mbxml.rb
|
60
|
+
- lib/rbrainz/webservice/includes.rb
|
61
|
+
- lib/rbrainz/webservice/query.rb
|
62
|
+
- lib/rbrainz/version.rb
|
63
|
+
- lib/rbrainz/core_ext.rb
|
64
|
+
- lib/rbrainz/data/languagenames.rb
|
65
|
+
- lib/rbrainz/data/countrynames.rb
|
66
|
+
- lib/rbrainz/data/scriptnames.rb
|
67
|
+
- lib/rbrainz/data/releasetypenames.rb
|
68
|
+
- lib/rbrainz/webservice.rb
|
69
|
+
- lib/rbrainz/model.rb
|
70
|
+
- lib/rbrainz/core_ext/range.rb
|
71
|
+
- lib/rbrainz/core_ext/net_http_digest.rb
|
72
|
+
- lib/rbrainz/core_ext/range/equality.rb
|
73
|
+
- lib/rbrainz/core_ext/mbid.rb
|
74
|
+
- lib/rbrainz/utils.rb
|
75
|
+
- lib/rbrainz/utils/helper.rb
|
76
|
+
- lib/rbrainz/utils/data.rb
|
77
|
+
- lib/rbrainz/model/scored_collection.rb
|
78
|
+
- lib/rbrainz/model/relateable.rb
|
79
|
+
- lib/rbrainz/model/taggable.rb
|
52
80
|
- lib/rbrainz/model/relation.rb
|
53
|
-
- lib/rbrainz/model/
|
54
|
-
- lib/rbrainz/model/label.rb
|
55
|
-
- lib/rbrainz/model/rateable.rb
|
56
|
-
- lib/rbrainz/model/release.rb
|
57
|
-
- lib/rbrainz/model/rating.rb
|
81
|
+
- lib/rbrainz/model/tag.rb
|
58
82
|
- lib/rbrainz/model/disc.rb
|
59
|
-
- lib/rbrainz/model/scored_collection.rb
|
60
|
-
- lib/rbrainz/model/individual.rb
|
61
83
|
- lib/rbrainz/model/alias.rb
|
84
|
+
- lib/rbrainz/model/track.rb
|
85
|
+
- lib/rbrainz/model/release_event.rb
|
86
|
+
- lib/rbrainz/model/user.rb
|
62
87
|
- lib/rbrainz/model/incomplete_date.rb
|
63
|
-
- lib/rbrainz/model/
|
64
|
-
- lib/rbrainz/model/release_group.rb
|
65
|
-
- lib/rbrainz/model/artist.rb
|
88
|
+
- lib/rbrainz/model/individual.rb
|
66
89
|
- lib/rbrainz/model/isrc.rb
|
67
|
-
- lib/rbrainz/model/
|
68
|
-
- lib/rbrainz/model/
|
69
|
-
- lib/rbrainz/model/taggable.rb
|
70
|
-
- lib/rbrainz/model/mbid.rb
|
71
|
-
- lib/rbrainz/model/tag.rb
|
90
|
+
- lib/rbrainz/model/label.rb
|
91
|
+
- lib/rbrainz/model/artist.rb
|
72
92
|
- lib/rbrainz/model/default_factory.rb
|
93
|
+
- lib/rbrainz/model/rateable.rb
|
94
|
+
- lib/rbrainz/model/mbid.rb
|
73
95
|
- lib/rbrainz/model/entity.rb
|
74
|
-
- lib/rbrainz/
|
75
|
-
- lib/rbrainz/
|
76
|
-
- lib/rbrainz/
|
77
|
-
- lib/rbrainz/
|
78
|
-
- lib/rbrainz/core_ext/mbid.rb
|
79
|
-
- lib/rbrainz/core_ext/range.rb
|
80
|
-
- lib/rbrainz/data/releasetypenames.rb
|
81
|
-
- lib/rbrainz/data/countrynames.rb
|
82
|
-
- lib/rbrainz/data/languagenames.rb
|
83
|
-
- lib/rbrainz/data/scriptnames.rb
|
84
|
-
- lib/rbrainz/webservice/webservice.rb
|
85
|
-
- lib/rbrainz/webservice/mbxml.rb
|
86
|
-
- lib/rbrainz/webservice/filter.rb
|
87
|
-
- lib/rbrainz/webservice/query.rb
|
88
|
-
- lib/rbrainz/webservice/includes.rb
|
89
|
-
- lib/rbrainz/webservice.rb
|
90
|
-
- lib/rbrainz/model.rb
|
91
|
-
- lib/rbrainz/utils.rb
|
92
|
-
- lib/rbrainz/version.rb
|
93
|
-
- lib/rbrainz/core_ext.rb
|
96
|
+
- lib/rbrainz/model/rating.rb
|
97
|
+
- lib/rbrainz/model/release.rb
|
98
|
+
- lib/rbrainz/model/collection.rb
|
99
|
+
- lib/rbrainz/model/release_group.rb
|
94
100
|
- lib/rbrainz.rb
|
95
|
-
- test/
|
96
|
-
- test/
|
97
|
-
- test/
|
98
|
-
- test/
|
99
|
-
- test/
|
100
|
-
- test/
|
101
|
-
- test/lib/test_entity.rb
|
102
|
-
- test/test_label_filter.rb
|
103
|
-
- test/test_label.rb
|
104
|
-
- test/test_mbxml.rb
|
105
|
-
- test/test_disc.rb
|
106
|
-
- test/test_rating.rb
|
107
|
-
- test/test_release_group_filter.rb
|
108
|
-
- test/test_release_filter.rb
|
101
|
+
- test/test_artist_filter.rb
|
102
|
+
- test/test_label_includes.rb
|
103
|
+
- test/test_track_filter.rb
|
104
|
+
- test/test_incomplete_date.rb
|
105
|
+
- test/test_scored_collection.rb
|
106
|
+
- test/test_artist.rb
|
109
107
|
- test/test_track_includes.rb
|
110
|
-
- test/
|
111
|
-
- test/
|
112
|
-
- test/
|
108
|
+
- test/test_release_event.rb
|
109
|
+
- test/test_default_factory.rb
|
110
|
+
- test/test_rating.rb
|
111
|
+
- test/test_mbid.rb
|
113
112
|
- test/test_isrc.rb
|
114
|
-
- test/
|
113
|
+
- test/test_webservice.rb
|
114
|
+
- test/test_disc.rb
|
115
|
+
- test/test_release_group_includes.rb
|
116
|
+
- test/test_release.rb
|
115
117
|
- test/test_track.rb
|
118
|
+
- test/test_collection.rb
|
119
|
+
- test/test_artist_includes.rb
|
120
|
+
- test/test_release_includes.rb
|
121
|
+
- test/test_mbxml.rb
|
116
122
|
- test/test_query.rb
|
117
|
-
- test/test_label_includes.rb
|
118
|
-
- test/test_artist.rb
|
119
123
|
- test/test_tag.rb
|
120
|
-
- test/
|
124
|
+
- test/test_label_filter.rb
|
121
125
|
- test/test_range_equality.rb
|
122
126
|
- test/test_relation.rb
|
123
|
-
- test/test_release.rb
|
124
|
-
- test/test_alias.rb
|
125
|
-
- test/test_release_event.rb
|
126
|
-
- test/test_mbid.rb
|
127
|
-
- test/test_release_group_includes.rb
|
128
|
-
- test/test_scored_collection.rb
|
129
|
-
- test/test_incomplete_date.rb
|
130
127
|
- test/test_release_group.rb
|
131
|
-
- test/
|
132
|
-
- test/
|
133
|
-
- test/
|
134
|
-
- test/
|
135
|
-
- test/
|
136
|
-
- test/
|
128
|
+
- test/lib/test_entity.rb
|
129
|
+
- test/lib/test_rateable.rb
|
130
|
+
- test/lib/mock_webservice.rb
|
131
|
+
- test/lib/testing_helper.rb
|
132
|
+
- test/lib/test_factory.rb
|
133
|
+
- test/lib/test_relateable.rb
|
134
|
+
- test/lib/test_taggable.rb
|
135
|
+
- test/test_alias.rb
|
136
|
+
- test/test_release_group_filter.rb
|
137
|
+
- test/test_utils.rb
|
138
|
+
- test/test_label.rb
|
139
|
+
- test/test_release_filter.rb
|
140
|
+
- test/test-data/invalid/artist/basic_1.xml
|
141
|
+
- test/test-data/invalid/artist/empty_1.xml
|
142
|
+
- test/test-data/invalid/artist/empty_3.xml
|
143
|
+
- test/test-data/invalid/artist/empty_2.xml
|
144
|
+
- test/test-data/invalid/artist/ratings_2.xml
|
145
|
+
- test/test-data/invalid/artist/basic_2.xml
|
146
|
+
- test/test-data/invalid/artist/ratings_1.xml
|
147
|
+
- test/test-data/invalid/artist/search_result_1.xml
|
148
|
+
- test/test-data/invalid/artist/tags_1.xml
|
149
|
+
- test/test-data/README
|
150
|
+
- test/test-data/valid/release-group/The_Cure_1.xml
|
151
|
+
- test/test-data/valid/release-group/search_result_1.xml
|
152
|
+
- test/test-data/valid/track/Silent_All_These_Years_2.xml
|
153
|
+
- test/test-data/valid/track/Silent_All_These_Years_5.xml
|
154
|
+
- test/test-data/valid/track/Silent_All_These_Years_4.xml
|
155
|
+
- test/test-data/valid/track/Silent_All_These_Years_6.xml
|
156
|
+
- test/test-data/valid/track/Silent_All_These_Years_1.xml
|
157
|
+
- test/test-data/valid/track/Silent_All_These_Years_3.xml
|
158
|
+
- test/test-data/valid/track/search_result_1.xml
|
137
159
|
- test/test-data/valid/label/Atlantic_Records_2.xml
|
138
|
-
- test/test-data/valid/label/Atlantic_Records_3.xml
|
139
160
|
- test/test-data/valid/label/search_result_1.xml
|
140
|
-
- test/test-data/valid/
|
161
|
+
- test/test-data/valid/label/Atlantic_Records_3.xml
|
162
|
+
- test/test-data/valid/label/Atlantic_Records_1.xml
|
163
|
+
- test/test-data/valid/release/Under_the_Pink_1.xml
|
164
|
+
- test/test-data/valid/release/Under_the_Pink_2.xml
|
165
|
+
- test/test-data/valid/release/Little_Earthquakes_1.xml
|
141
166
|
- test/test-data/valid/release/Mission_Impossible_2.xml
|
142
|
-
- test/test-data/valid/release/Under_the_Pink_3.xml
|
143
|
-
- test/test-data/valid/release/search_result_1.xml
|
144
167
|
- test/test-data/valid/release/Highway_61_Revisited_1.xml
|
145
|
-
- test/test-data/valid/release/
|
146
|
-
- test/test-data/valid/release/
|
168
|
+
- test/test-data/valid/release/search_result_1.xml
|
169
|
+
- test/test-data/valid/release/Under_the_Pink_3.xml
|
147
170
|
- test/test-data/valid/release/Little_Earthquakes_2.xml
|
148
|
-
- test/test-data/valid/release/
|
149
|
-
- test/test-data/valid/
|
150
|
-
- test/test-data/valid/track
|
151
|
-
- test/test-data/valid/track/Silent_All_These_Years_1.xml
|
152
|
-
- test/test-data/valid/track/Silent_All_These_Years_2.xml
|
153
|
-
- test/test-data/valid/track/Silent_All_These_Years_3.xml
|
154
|
-
- test/test-data/valid/track/search_result_1.xml
|
155
|
-
- test/test-data/valid/track/Silent_All_These_Years_4.xml
|
156
|
-
- test/test-data/valid/track/Silent_All_These_Years_5.xml
|
157
|
-
- test/test-data/valid/track/Silent_All_These_Years_6.xml
|
158
|
-
- test/test-data/valid/artist
|
159
|
-
- test/test-data/valid/artist/search_result_1.xml
|
171
|
+
- test/test-data/valid/release/Highway_61_Revisited_2.xml
|
172
|
+
- test/test-data/valid/artist/Tori_Amos_2.xml
|
160
173
|
- test/test-data/valid/artist/Tori_Amos_5.xml
|
161
174
|
- test/test-data/valid/artist/Tchaikovsky-1.xml
|
175
|
+
- test/test-data/valid/artist/empty_1.xml
|
176
|
+
- test/test-data/valid/artist/empty_2.xml
|
162
177
|
- test/test-data/valid/artist/Tori_Amos_1.xml
|
163
178
|
- test/test-data/valid/artist/Tchaikovsky-2.xml
|
164
|
-
- test/test-data/valid/artist/
|
165
|
-
- test/test-data/valid/artist/Tori_Amos_3.xml
|
166
|
-
- test/test-data/valid/artist/empty_1.xml
|
179
|
+
- test/test-data/valid/artist/search_result_1.xml
|
167
180
|
- test/test-data/valid/artist/Tori_Amos_4.xml
|
168
|
-
- test/test-data/valid/artist/
|
169
|
-
- test/test-data/valid/release-group
|
170
|
-
- test/test-data/valid/release-group/search_result_1.xml
|
171
|
-
- test/test-data/valid/release-group/The_Cure_1.xml
|
172
|
-
- test/test-data/valid/user
|
181
|
+
- test/test-data/valid/artist/Tori_Amos_3.xml
|
173
182
|
- test/test-data/valid/user/User_1.xml
|
174
|
-
- test/test-data/invalid
|
175
|
-
- test/test-data/invalid/release
|
176
|
-
- test/test-data/invalid/track
|
177
|
-
- test/test-data/invalid/artist
|
178
|
-
- test/test-data/invalid/artist/ratings_1.xml
|
179
|
-
- test/test-data/invalid/artist/empty_3.xml
|
180
|
-
- test/test-data/invalid/artist/basic_1.xml
|
181
|
-
- test/test-data/invalid/artist/basic_2.xml
|
182
|
-
- test/test-data/invalid/artist/search_result_1.xml
|
183
|
-
- test/test-data/invalid/artist/ratings_2.xml
|
184
|
-
- test/test-data/invalid/artist/empty_1.xml
|
185
|
-
- test/test-data/invalid/artist/tags_1.xml
|
186
|
-
- test/test-data/invalid/artist/empty_2.xml
|
187
|
-
- test/test-data/README
|
188
183
|
has_rdoc: true
|
189
184
|
homepage: http://rbrainz.rubyforge.org
|
185
|
+
licenses: []
|
186
|
+
|
190
187
|
post_install_message:
|
191
188
|
rdoc_options: []
|
192
189
|
|
193
190
|
require_paths:
|
194
191
|
- lib
|
195
192
|
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
196
194
|
requirements:
|
197
195
|
- - ">="
|
198
196
|
- !ruby/object:Gem::Version
|
197
|
+
hash: 3
|
198
|
+
segments:
|
199
|
+
- 0
|
199
200
|
version: "0"
|
200
|
-
version:
|
201
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
202
203
|
requirements:
|
203
204
|
- - ">="
|
204
205
|
- !ruby/object:Gem::Version
|
206
|
+
hash: 3
|
207
|
+
segments:
|
208
|
+
- 0
|
205
209
|
version: "0"
|
206
|
-
version:
|
207
210
|
requirements:
|
208
211
|
- "Optional: mb-discid >= 0.1.2 (for calculating disc IDs)"
|
209
212
|
rubyforge_project: rbrainz
|
210
|
-
rubygems_version: 1.3.
|
213
|
+
rubygems_version: 1.3.7
|
211
214
|
signing_key:
|
212
|
-
specification_version:
|
215
|
+
specification_version: 3
|
213
216
|
summary: Ruby library for the MusicBrainz XML web service.
|
214
217
|
test_files: []
|
215
218
|
|