musicbrainz-ruby 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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