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 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 290 2009-08-04 16:34:54Z phw $
89
+ $Id: CHANGES 322 2011-04-28 20:16:42Z phw $
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- RBrainz is Copyright (c) 2007-2009 Philipp Wolfer and 2007 Nigel Graham.
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-2009 Philipp Wolfer and 2007 Nigel Graham.
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.
@@ -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-2009 Philipp Wolfer and 2007 Nigel Graham.
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 252 2009-05-13 19:21:28Z phw $
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 254 2009-05-13 20:04:36Z phw $
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 = -1
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 params['qop']
70
+ if qop
68
71
  request_digest << ':' << ('%08x' % @@nonce_count)
69
72
  request_digest << ':' << CNONCE
70
- request_digest << ':' << params['qop']
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=#{params['qop']}" if params['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 254 2009-05-13 20:04:36Z phw $
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 266 2009-05-24 22:15:22Z phw $
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
 
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # $Id: version.rb 290 2009-08-04 16:34:54Z phw $
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.1'
14
+ RBRAINZ_VERSION = '0.5.2'
15
15
 
16
16
  end
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # $Id: includes.rb 254 2009-05-13 20:04:36Z phw $
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 << 'user_tags' if includes[:user_tags]
91
+ @parameters << 'user-tags' if includes[:user_tags]
92
92
  @parameters << 'ratings' if includes[:ratings]
93
- @parameters << 'user_ratings' if includes[:user_ratings]
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 << 'user_tags' if includes[:user_tags]
169
+ @parameters << 'user-tags' if includes[:user_tags]
170
170
  @parameters << 'ratings' if includes[:ratings]
171
- @parameters << 'user_ratings' if includes[:user_ratings]
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 << 'user_tags' if includes[:user_tags]
209
+ @parameters << 'user-tags' if includes[:user_tags]
210
210
  @parameters << 'ratings' if includes[:ratings]
211
- @parameters << 'user_ratings' if includes[:user_ratings]
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 << 'user_tags' if includes[:user_tags]
242
+ @parameters << 'user-tags' if includes[:user_tags]
243
243
  @parameters << 'ratings' if includes[:ratings]
244
- @parameters << 'user_ratings' if includes[:user_ratings]
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 278 2009-06-07 21:30:51Z phw $
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
- # Create an +Tag+ object from the given tag node.
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 289 2009-08-04 12:52:31Z phw $
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
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # $Id: test_mbxml.rb 292 2009-08-04 17:06:18Z phw $
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
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # $Id: test_query.rb 254 2009-05-13 20:04:36Z phw $
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
- # TODO: Enable this test once there is a proper test file.
69
- #def test_get_release_groups
70
- # filter = Webservice::ReleaseGroupFilter.new(:title=>'The Cure')
71
- # collection = @query.get_release_groups(filter)
72
- # assert collection.is_a?(Model::Collection)
73
- # assert_equal 2, collection.size
74
- # collection.entities.each {|e| assert e.is_a?(Model::ReleaseGroup) }
75
- #end
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'
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # $Id: test_track.rb 285 2009-08-04 12:00:34Z phw $
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? Model::Collection
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
- version: 0.5.1
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: 2009-08-04 00:00:00 +02:00
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 web service. RBrainz supports the MusicBrainz XML Metadata Version 1.2, including support for labels and extended release events. RBrainz follows the design of python-musicbrainz2, the reference implementation for a MusicBrainz client library. Developers used to python-musicbrainz2 should already know most of RBrainz' interface. However, RBrainz differs from python-musicbrainz2 wherever it makes the library more Ruby like or easier to use.
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/searchreleasegroups.rb
37
- - examples/getreleasegroup.rb
38
- - examples/searchcdstubs.rb
39
- - examples/searchtracks.rb
42
+ - examples/searchreleases.rb
40
43
  - examples/getuser.rb
41
- - examples/getlabel.rb
42
- - examples/searchartists.rb
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/getartist.rb
46
- - examples/searchreleases.rb
47
- - examples/submit_isrcs.rb
54
+ - examples/getlabel.rb
55
+ - examples/getreleasegroup.rb
48
56
  - examples/searchlabels.rb
49
- - examples/rate.rb
50
- - examples/tag.rb
51
- - lib/rbrainz/model/release_event.rb
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/user.rb
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/collection.rb
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/track.rb
68
- - lib/rbrainz/model/relateable.rb
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/utils/helper.rb
75
- - lib/rbrainz/utils/data.rb
76
- - lib/rbrainz/core_ext/range/equality.rb
77
- - lib/rbrainz/core_ext/net_http_digest.rb
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/lib/test_relateable.rb
96
- - test/lib/test_rateable.rb
97
- - test/lib/mock_webservice.rb
98
- - test/lib/test_taggable.rb
99
- - test/lib/test_factory.rb
100
- - test/lib/testing_helper.rb
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/test_artist_includes.rb
111
- - test/test_webservice.rb
112
- - test/test_utils.rb
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/test_collection.rb
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/test_release_includes.rb
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/test_track_filter.rb
132
- - test/test_default_factory.rb
133
- - test/test_artist_filter.rb
134
- - test/test-data/valid
135
- - test/test-data/valid/label
136
- - test/test-data/valid/label/Atlantic_Records_1.xml
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/release
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/Highway_61_Revisited_2.xml
146
- - test/test-data/valid/release/Little_Earthquakes_1.xml
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/Under_the_Pink_1.xml
149
- - test/test-data/valid/release/Under_the_Pink_2.xml
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/Tori_Amos_2.xml
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/empty_2.xml
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.1
213
+ rubygems_version: 1.3.7
211
214
  signing_key:
212
- specification_version: 2
215
+ specification_version: 3
213
216
  summary: Ruby library for the MusicBrainz XML web service.
214
217
  test_files: []
215
218