musicbrainz-ruby 0.3.2 → 0.4.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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ pkg
2
+ .DS_Store
3
+ *.swp
4
+ Gemfile.lock
5
+ .rbx
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ --format documentation
3
+ --backtrace
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/README.markdown CHANGED
@@ -3,9 +3,10 @@ MusicBrainz-ruby
3
3
 
4
4
  O hai, I [HTTParty][1]'d with ur [web service][2]. No offence, RBrainz gem.
5
5
 
6
- This gem supports authentication, all the GET calls and basic POSTing (not batch POSTs) provided you read the web service documentation and provide the correct parameters.
6
+ This gem currently only supports the lookup, browse and search GET requests.
7
+ Data submission coming soon.
7
8
 
8
- Returns [Mashes][3] of the metadata tag.
9
+ Returns [Mashes][3] of the metadata tag from MusicBrainz's XML responses.
9
10
 
10
11
  [1]: https://github.com/jnunemaker/httparty
11
12
  [2]: http://wiki.musicbrainz.org/XMLWebService
@@ -18,17 +19,15 @@ Install
18
19
 
19
20
  Examples
20
21
  --------
21
-
22
+
22
23
  require 'musicbrainz'
23
24
  brainz = MusicBrainz::Client.new('username', 'password')
24
-
25
+
25
26
  # Find an artist by id, include artist relations
26
- brainz.artist('45d15468-2918-4da4-870b-d6b880504f77', :inc => 'artist-rels')
27
- # Search for artists with the term 'Diplo'
28
- brainz.artist(nil, :query => 'Diplo')
29
- # Tag an Artist
30
- brainz.post('tag', :id => '45d15468-2918-4da4-870b-d6b880504f77', :entity => 'artist', :tags => 'post-everything')
31
-
27
+ brainz.artist(:mbid => '45d15468-2918-4da4-870b-d6b880504f77', :inc => 'artist-rels')
28
+ # Search for artists with the query 'Diplo'
29
+ brainz.artist(:query => 'Diplo')
30
+
32
31
  MIT License
33
32
  ===========
34
33
 
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ desc 'Run specs'
6
+ RSpec::Core::RakeTask.new(:spec) do |spec|
7
+ spec.pattern = './spec/musicbrainz/*_spec.rb'
8
+ end
9
+
10
+ task :default => [:spec]
data/lib/musicbrainz.rb CHANGED
@@ -1,81 +1,3 @@
1
- require 'rubygems'
2
-
3
- gem 'httparty', '~> 0.7.3'
4
- require 'httparty'
5
-
6
- gem 'hashie', '~> 1.0'
7
- require 'hashie'
8
-
9
- module MusicBrainz
10
- class Client
11
- include HTTParty
12
- include Hashie
13
-
14
- base_uri 'musicbrainz.org/ws/1'
15
-
16
- # Provide your username and password if you need to make authenticated calls
17
- def initialize(username = nil, password = nil)
18
- self.class.digest_auth username, password
19
- end
20
-
21
- def artist(musicbrainz_id = nil, params = {})
22
- request("/artist/#{musicbrainz_id}", params)
23
- end
24
-
25
- def release_group(musicbrainz_id = nil, params = {})
26
- request("/release-group/#{musicbrainz_id}", params)
27
- end
28
-
29
- def release(musicbrainz_id = nil, params = {})
30
- request("/release/#{musicbrainz_id}", params)
31
- end
32
-
33
- def track(musicbrainz_id = nil, params = {})
34
- request("/track/#{musicbrainz_id}", params)
35
- end
36
-
37
- def label(musicbrainz_id = nil, params = {})
38
- request("/label/#{musicbrainz_id}", params)
39
- end
40
-
41
- def rating(params = {})
42
- request('/rating/', params)
43
- end
44
-
45
- def tag(params = {})
46
- request('/tag/', params)
47
- end
48
-
49
- def collection(params = {})
50
- request('/collection/', params)
51
- end
52
-
53
- # provide a resource you want to post to, and the appropriate parameters
54
- def post(resource, params = {})
55
- response = self.class.post("/#{resource}/", :body => params)
56
- if response.response.is_a? Net::HTTPOK
57
- return true
58
- else
59
- raise response.response.message
60
- end
61
- end
62
-
63
- private
64
- def request(path, params)
65
- options = {:query => {:type => 'xml'}}
66
- options[:query].merge!(params)
67
-
68
- response = self.class.get(path, options)
69
-
70
- if response.response.is_a? Net::HTTPBadRequest
71
- raise ArgumentError, response.parsed_response
72
- end
73
-
74
- if response.response.is_a? Net::HTTPUnauthorized
75
- raise response.response.message
76
- end
77
-
78
- Mash.new(response).metadata
79
- end
80
- end
81
- end
1
+ require 'musicbrainz/version'
2
+ require 'musicbrainz/request'
3
+ require 'musicbrainz/client'
@@ -0,0 +1,97 @@
1
+ require 'httparty'
2
+ require 'hashie'
3
+
4
+ module MusicBrainz
5
+ class Client
6
+ include HTTParty
7
+ include Hashie
8
+
9
+ DEFAULT_USER_AGENT = "musicbrainz-ruby gem #{MusicBrainz::VERSION}"
10
+
11
+ base_uri 'musicbrainz.org/ws/2'
12
+
13
+ # Provide your username and password to make authenticated calls
14
+ def initialize(options = {})
15
+ if options[:username] and options[:password]
16
+ self.class.digest_auth options[:username], options[:password]
17
+ end
18
+ if options[:'User-Agent']
19
+ self.class.headers 'User-Agent' => options[:'User-Agent']
20
+ else
21
+ self.class.headers 'User-Agent' => DEFAULT_USER_AGENT
22
+ end
23
+ end
24
+
25
+ def artist(params = {})
26
+ request('artist', params)
27
+ end
28
+
29
+ def label(params = {})
30
+ request('label', params)
31
+ end
32
+
33
+ def recording(params = {})
34
+ request('recording', params)
35
+ end
36
+
37
+ def release_group(params = {})
38
+ request('release-group', params)
39
+ end
40
+
41
+ def work(params = {})
42
+ request('work', params)
43
+ end
44
+
45
+ def release(params = {})
46
+ request('release', params)
47
+ end
48
+
49
+ def recording(params = {})
50
+ request('recording', params)
51
+ end
52
+
53
+ def rating(params = {})
54
+ request('rating', params)
55
+ end
56
+
57
+ def tag(params = {})
58
+ request('tag', params)
59
+ end
60
+
61
+ def collection(params = {})
62
+ request('collection', params)
63
+ end
64
+
65
+ def discid(params = {})
66
+ request('discid', params)
67
+ end
68
+
69
+ def puid(params = {})
70
+ request('puid', params)
71
+ end
72
+
73
+ def isrc(params = {})
74
+ request('isrc', params)
75
+ end
76
+
77
+ def iswc(params = {})
78
+ request('iswc', params)
79
+ end
80
+
81
+ private
82
+ def request(resource, params)
83
+ request = Request.new(resource, params)
84
+ response = self.class.get(request.path, request.options)
85
+
86
+ if response.response.is_a? Net::HTTPBadRequest
87
+ raise ArgumentError, response.parsed_response
88
+ end
89
+
90
+ if response.response.is_a? Net::HTTPUnauthorized
91
+ raise response.response.message
92
+ end
93
+
94
+ Mash.new(response).metadata
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,29 @@
1
+ module MusicBrainz
2
+ class Request
3
+
4
+ UNIQUE_IDENTIFIERS = %q{discid puid isrc iswc}
5
+
6
+ def initialize(resource, params)
7
+ @resource = resource
8
+ @params = params
9
+ @id = nil
10
+
11
+ if UNIQUE_IDENTIFIERS.include?(resource)
12
+ @id = params.delete(resource.to_sym)
13
+ elsif params.has_key?(:mbid)
14
+ @id = params.delete(:mbid)
15
+ end
16
+ end
17
+
18
+ def path
19
+ path = "/#{@resource}/#{@id}"
20
+ end
21
+
22
+ def options
23
+ options = {}
24
+ options[:query] = @params unless @params.empty?
25
+ options
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module MusicBrainz
2
+ VERSION = '0.4.0'
3
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'musicbrainz/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = %q{musicbrainz-ruby}
7
+ s.version = MusicBrainz::VERSION
8
+
9
+ s.authors = ['Robin Tweedie']
10
+ s.date = %q{2011-02-02}
11
+ s.email = %q{robin@songkick.com}
12
+ s.summary = %q{Simple Ruby wrapper for MusicBrainz XML Web Service}
13
+ s.description = %q{Simple Ruby wrapper for MusicBrainz XML Web Service}
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_runtime_dependency(%q<httparty>, ["~> 0.8.0"])
21
+ s.add_runtime_dependency(%q<hashie>, ["~> 1.1.0"])
22
+ s.add_development_dependency(%q<rspec>, [">= 2.4"])
23
+ s.add_development_dependency(%q<fakeweb>, [">= 1.3"])
24
+ end
@@ -0,0 +1,2 @@
1
+ Must specify a least one parameter (other than 'limit', 'offset' or empty 'query') for collections query.
2
+ For usage, please see: http://musicbrainz.org/development/mmd
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#"><artist id="a56bd8f9-8ef8-4d63-89a4-794ed1360dd2" type="Person"><name>Diplo</name><sort-name>Diplo</sort-name><life-span begin="1978-11-10"/></artist></metadata>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" xmlns:ext="http://musicbrainz.org/ns/ext-1.0#"><artist-list offset="0" count="11"><artist type="Person" id="a56bd8f9-8ef8-4d63-89a4-794ed1360dd2" ext:score="100"><name>Diplo</name><sort-name>Diplo</sort-name><life-span begin="1978-11-10"/></artist><artist type="Group" id="e190ee5c-ddb9-402f-9f7b-809ed299b810" ext:score="50"><name>Diplo &amp; Dr Evil</name><sort-name>Diplo &amp; Dr Evil</sort-name></artist><artist type="Group" id="76abfb6b-5103-43ae-8304-0347a6f16097" ext:score="50"><name>Diplo &amp; Tripledouble</name><sort-name>Diplo &amp; Tripledouble</sort-name></artist><artist type="Group" id="f43d5e3c-e423-44ea-b4e3-a8508c88b874" ext:score="50"><name>Diplo &amp; Santogold</name><sort-name>Diplo &amp; Santogold</sort-name><life-span begin="2008"/></artist><artist type="Group" id="ed09875a-3bb0-44f2-8b51-24e7dc8cec49" ext:score="50"><name>Diplo &amp; Laidback Luke</name><sort-name>Diplo &amp; Laidback Luke</sort-name></artist><artist type="Unknown" id="961f11d7-bbee-4369-b49c-82b63cb8c325" ext:score="50"><name>Tiësto &amp; Diplo</name><sort-name>Tiësto &amp; Diplo</sort-name></artist><artist type="Unknown" id="9c9bc7d4-a4e2-4673-b074-921efe7ca0e2" ext:score="50"><name>Diplo &amp; $mall ¢hange</name><sort-name>Diplo &amp; $mall ¢hange</sort-name></artist><artist type="Group" id="d3eb024d-ea69-4d80-8cff-98095b9340b9" ext:score="50"><name>Diplo &amp; Lil Jon</name><sort-name>Diplo &amp; Lil Jon</sort-name></artist><artist type="Group" id="efb1ea9c-b886-4f95-9be6-3681ae13ed29" ext:score="50"><name>Tiesto vs. Diplo</name><sort-name>Tiesto vs. Diplo</sort-name></artist><artist type="Group" id="7b3201e2-c217-4df5-a92f-00c24a6fa063" ext:score="43"><name>Diplo &amp; Martina Topley-Bird</name><sort-name>Diplo &amp; Topley-Bird, Martina</sort-name></artist><artist type="Group" id="19f253de-109b-4086-98bf-65987edca55c" ext:score="17"><name>Hollertronix</name><sort-name>Hollertronix</sort-name></artist></artist-list></metadata>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
2
+ <HTML><HEAD>
3
+ <TITLE>401 Authorization Required</TITLE>
4
+ </HEAD><BODY>
5
+ <H1>Authorization Required</H1>
6
+ This server could not verify that you
7
+ are authorized to access the document
8
+ requested. Either you supplied the wrong
9
+ credentials (e.g., bad password), or your
10
+ browser doesn't understand how to supply
11
+ the credentials required.<P>
12
+ <HR>
13
+ <ADDRESS>Apache/1.3.33 Server at musicbrainz.org Port 80</ADDRESS>
14
+ </BODY></HTML>
@@ -0,0 +1 @@
1
+ <metadata><user-rating>5</user-rating></metadata>
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ describe MusicBrainz::Client do
4
+ let(:client){ MusicBrainz::Client.new }
5
+ subject { client }
6
+
7
+ it 'provides access to the core resources' do
8
+ resources = [:artist, :label, :recording, :release, :release_group, :work]
9
+ should respond_to(*resources).with(1).argument
10
+ end
11
+
12
+ it 'provides access to the non-core resources' do
13
+ should respond_to(:rating, :tag, :collection).with(1).argument
14
+ end
15
+
16
+ it 'provides access to the unique identifier lookups' do
17
+ should respond_to(:discid, :puid, :isrc, :iswc).with(1).argument
18
+ end
19
+
20
+ it 'specifies a User-Agent in the headers' do
21
+ expected = /musicbrainz-ruby gem/
22
+ subject.class.default_options[:headers]['User-Agent'].should =~ expected
23
+ end
24
+
25
+ context 'when a User-Agent is provided' do
26
+ let(:user_agent) { 'Herp Derp v1.2.3' }
27
+ let(:client) { MusicBrainz::Client.new(:'User-Agent' => user_agent) }
28
+
29
+ it 'specifies the provided User-Agent in the headers' do
30
+ subject.class.default_options[:headers]['User-Agent'].should == user_agent
31
+ end
32
+ end
33
+
34
+ context 'when making a bad request' do
35
+ subject { client.artist } # request has no parameters
36
+
37
+ it 'raises an error' do
38
+ lambda {subject}.should raise_error(ArgumentError, /Must specify a least one parameter/)
39
+ end
40
+ end
41
+
42
+ context 'when requesting resources requiring authentication' do
43
+ let(:mbid) { '4bd31567-70a8-4007-9ac6-3c68c7fc3d45' }
44
+ subject { client.rating(:id => mbid, :entity => 'artist') }
45
+
46
+ context 'and the resource is requested without authentication' do
47
+ it 'raises an error' do
48
+ lambda {subject}.should raise_error(RuntimeError, /Authorization Required/)
49
+ end
50
+ end
51
+
52
+ context 'and the resource is requested with authentication' do
53
+ let(:client) do
54
+ MusicBrainz::Client.new(:username => 'user', :password => 'password')
55
+ end
56
+
57
+ it 'returns the resource' do
58
+ subject.user_rating.should == "5"
59
+ end
60
+ end
61
+ end
62
+
63
+ context 'when searching for a resource' do
64
+ subject { client.artist(:query => 'Diplo') }
65
+
66
+ it 'returns a list of resources' do
67
+ subject.artist_list.artist.should be_kind_of(Array)
68
+ subject.artist_list.artist.size.should == 11
69
+ end
70
+ end
71
+
72
+ context 'when fetching a resource by MusicBrainz id' do
73
+ subject { client.artist(:mbid => 'a56bd8f9-8ef8-4d63-89a4-794ed1360dd2') }
74
+
75
+ it 'returns a single resource' do
76
+ subject.artist.should be_kind_of(Hashie::Mash)
77
+ subject.artist.name.should == 'Diplo'
78
+ end
79
+ end
80
+
81
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe MusicBrainz::Request do
4
+ let(:resource) { 'artist' }
5
+ let(:params) { Hash.new }
6
+ subject { MusicBrainz::Request.new(resource, params) }
7
+
8
+ end
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+
3
+ gem 'fakeweb', '~> 1.3.0'
4
+ require 'fakeweb'
5
+
6
+ dir = File.expand_path(File.dirname(__FILE__))
7
+ require File.join(dir, '..', 'lib', 'musicbrainz')
8
+
9
+ FakeWeb.allow_net_connect = false
10
+
11
+ base = MusicBrainz::Client.base_uri
12
+ {:artist_search_diplo => base + '/artist/?query=Diplo',
13
+ :artist_by_id_diplo => base + '/artist/a56bd8f9-8ef8-4d63-89a4-794ed1360dd2'
14
+ }.each do |fixture, url|
15
+ path = File.join(dir, 'fixtures', "#{fixture}.xml")
16
+ body = File.read(path) if File.file?(path)
17
+ content_type = 'text/xml; charset=utf-8'
18
+ FakeWeb.register_uri(:get, url, :body => body, :content_type => content_type)
19
+ FakeWeb.register_uri(:head, url, :content_type => content_type)
20
+ end
21
+
22
+ bad_request = 'http://musicbrainz.org/ws/2/artist/'
23
+ body = File.read(File.join dir, 'fixtures', "artist_bad_request.txt")
24
+ FakeWeb.register_uri(:get, bad_request, :body => body, :status => ['400', 'Bad Request'])
25
+ FakeWeb.register_uri(:head, bad_request, :status => ['400', 'Bad Request'])
26
+
27
+ rating_request = 'http://musicbrainz.org/ws/2/rating/?id=4bd31567-70a8-4007-9ac6-3c68c7fc3d45&entity=artist'
28
+ error_body = File.read(File.join dir, 'fixtures', "rating_auth_required.html")
29
+ rating_body = File.read(File.join dir, 'fixtures', "rating_by_id.xml")
30
+ FakeWeb.register_uri(:get, rating_request, [{:body => error_body, :status => ["401", "Authorization Required"]},
31
+ {:body => rating_body, :content_type => 'text/xml; charset=utf-8'}])
32
+ FakeWeb.register_uri(:head, rating_request, [{:status => ["401", "Authorization Required"]},
33
+ {:content_type => 'text/xml; charset=utf-8'}])
metadata CHANGED
@@ -1,129 +1,114 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: musicbrainz-ruby
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 2
10
- version: 0.3.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Robin Tweedie
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-02-02 00:00:00 +00:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-02-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: httparty
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70317351955220 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 5
30
- segments:
31
- - 0
32
- - 7
33
- - 3
34
- version: 0.7.3
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.0
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: hashie
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70317351955220
25
+ - !ruby/object:Gem::Dependency
26
+ name: hashie
27
+ requirement: &70317351954660 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
29
+ requirements:
43
30
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 1
48
- - 0
49
- version: "1.0"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.1.0
50
33
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: rspec
54
34
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70317351954660
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70317351954140 !ruby/object:Gem::Requirement
56
39
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 11
61
- segments:
62
- - 2
63
- - 4
64
- version: "2.4"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '2.4'
65
44
  type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: fakeweb
69
45
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70317351954140
47
+ - !ruby/object:Gem::Dependency
48
+ name: fakeweb
49
+ requirement: &70317351953380 !ruby/object:Gem::Requirement
71
50
  none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 9
76
- segments:
77
- - 1
78
- - 3
79
- version: "1.3"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
80
55
  type: :development
81
- version_requirements: *id004
82
- description:
56
+ prerelease: false
57
+ version_requirements: *70317351953380
58
+ description: Simple Ruby wrapper for MusicBrainz XML Web Service
83
59
  email: robin@songkick.com
84
60
  executables: []
85
-
86
61
  extensions: []
87
-
88
- extra_rdoc_files:
89
- - README.markdown
90
- files:
62
+ extra_rdoc_files: []
63
+ files:
64
+ - .gitignore
65
+ - .rspec
66
+ - Gemfile
91
67
  - README.markdown
68
+ - Rakefile
92
69
  - lib/musicbrainz.rb
93
- has_rdoc: true
94
- homepage: https://github.com/dwo/musicbrainz-ruby
70
+ - lib/musicbrainz/client.rb
71
+ - lib/musicbrainz/request.rb
72
+ - lib/musicbrainz/version.rb
73
+ - musicbrainz-ruby.gemspec
74
+ - spec/fixtures/artist_bad_request.txt
75
+ - spec/fixtures/artist_by_id_diplo.xml
76
+ - spec/fixtures/artist_search_diplo.xml
77
+ - spec/fixtures/rating_auth_required.html
78
+ - spec/fixtures/rating_by_id.xml
79
+ - spec/musicbrainz/client_spec.rb
80
+ - spec/musicbrainz/request_spec.rb
81
+ - spec/spec_helper.rb
82
+ homepage:
95
83
  licenses: []
96
-
97
84
  post_install_message:
98
- rdoc_options:
99
- - --main
100
- - README.markdown
101
- require_paths:
85
+ rdoc_options: []
86
+ require_paths:
102
87
  - lib
103
- required_ruby_version: !ruby/object:Gem::Requirement
88
+ required_ruby_version: !ruby/object:Gem::Requirement
104
89
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 3
109
- segments:
110
- - 0
111
- version: "0"
112
- required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
95
  none: false
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- hash: 3
118
- segments:
119
- - 0
120
- version: "0"
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
121
100
  requirements: []
122
-
123
101
  rubyforge_project:
124
- rubygems_version: 1.4.2
102
+ rubygems_version: 1.8.10
125
103
  signing_key:
126
104
  specification_version: 3
127
105
  summary: Simple Ruby wrapper for MusicBrainz XML Web Service
128
- test_files: []
129
-
106
+ test_files:
107
+ - spec/fixtures/artist_bad_request.txt
108
+ - spec/fixtures/artist_by_id_diplo.xml
109
+ - spec/fixtures/artist_search_diplo.xml
110
+ - spec/fixtures/rating_auth_required.html
111
+ - spec/fixtures/rating_by_id.xml
112
+ - spec/musicbrainz/client_spec.rb
113
+ - spec/musicbrainz/request_spec.rb
114
+ - spec/spec_helper.rb