discogs-wrapper 1.1.4 → 2.0.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/LICENSE +9 -0
- data/README.markdown +123 -43
- data/lib/discogs-wrapper.rb +1 -0
- data/lib/discogs.rb +1 -0
- data/lib/wrapper/authentication.rb +56 -0
- data/lib/wrapper/wrapper.rb +732 -43
- data/spec/samples/valid_artist.json +1 -0
- data/spec/samples/valid_artist_releases.json +1 -0
- data/spec/samples/valid_fields.json +48 -0
- data/spec/samples/valid_folder.json +6 -0
- data/spec/samples/valid_identity.json +6 -0
- data/spec/samples/valid_label.json +1 -0
- data/spec/samples/valid_label_releases.json +1 -0
- data/spec/samples/valid_listing.json +1 -0
- data/spec/samples/valid_master_release.json +1 -0
- data/spec/samples/valid_master_release_versions.json +1 -0
- data/spec/samples/valid_order.json +57 -0
- data/spec/samples/valid_order_messages.json +102 -0
- data/spec/samples/valid_orders.json +68 -0
- data/spec/samples/valid_price_suggestions.json +34 -0
- data/spec/samples/valid_release.json +1 -0
- data/spec/samples/valid_search_results.json +1 -0
- data/spec/samples/valid_user.json +1 -0
- data/spec/samples/valid_user_collection.json +1 -0
- data/spec/samples/valid_user_folder.json +6 -0
- data/spec/samples/valid_user_folders.json +16 -0
- data/spec/samples/valid_user_inventory.json +41 -0
- data/spec/samples/valid_user_profile.json +25 -0
- data/spec/samples/valid_user_wantlist.json +1 -0
- data/spec/samples/valid_wantlist_release.json +41 -0
- data/spec/spec_helper.rb +4 -18
- data/spec/wrapper_methods/add_release_to_user_wantlist_spec.rb +42 -0
- data/spec/wrapper_methods/edit_release_in_user_wantlist_spec.rb +38 -0
- data/spec/wrapper_methods/edit_user_spec.rb +36 -0
- data/spec/wrapper_methods/get_artist_releases_spec.rb +49 -0
- data/spec/wrapper_methods/get_artist_spec.rb +15 -75
- data/spec/wrapper_methods/get_identity_spec.rb +35 -0
- data/spec/wrapper_methods/get_label_releases_spec.rb +49 -0
- data/spec/wrapper_methods/get_label_spec.rb +15 -28
- data/spec/wrapper_methods/get_listing_spec.rb +40 -0
- data/spec/wrapper_methods/get_master_release_spec.rb +16 -42
- data/spec/wrapper_methods/get_master_release_versions_spec.rb +49 -0
- data/spec/wrapper_methods/get_order_messages_spec.rb +36 -0
- data/spec/wrapper_methods/get_order_spec.rb +36 -0
- data/spec/wrapper_methods/get_price_suggestions_spec.rb +36 -0
- data/spec/wrapper_methods/get_release_spec.rb +26 -52
- data/spec/wrapper_methods/get_user_collection_spec.rb +41 -0
- data/spec/wrapper_methods/get_user_folder_spec.rb +46 -0
- data/spec/wrapper_methods/get_user_folders_spec.rb +42 -0
- data/spec/wrapper_methods/get_user_inventory_spec.rb +45 -0
- data/spec/wrapper_methods/get_user_spec.rb +45 -0
- data/spec/wrapper_methods/get_user_wantlist_spec.rb +49 -0
- data/spec/wrapper_methods/search_spec.rb +22 -293
- data/spec/wrapper_spec.rb +124 -45
- metadata +162 -67
- data/Rakefile +0 -26
- data/discogs.gemspec +0 -22
- data/lib/wrapper/resource.rb +0 -80
- data/lib/wrapper/resource_mappings.rb +0 -80
- data/lib/wrapper/resources/artist.rb +0 -40
- data/lib/wrapper/resources/artist_release.rb +0 -28
- data/lib/wrapper/resources/format.rb +0 -11
- data/lib/wrapper/resources/generic_list.rb +0 -29
- data/lib/wrapper/resources/image.rb +0 -11
- data/lib/wrapper/resources/label.rb +0 -16
- data/lib/wrapper/resources/label_release.rb +0 -17
- data/lib/wrapper/resources/master_release.rb +0 -19
- data/lib/wrapper/resources/master_release_version.rb +0 -17
- data/lib/wrapper/resources/release.rb +0 -25
- data/lib/wrapper/resources/release_artist.rb +0 -21
- data/lib/wrapper/resources/release_label.rb +0 -10
- data/lib/wrapper/resources/search.rb +0 -61
- data/lib/wrapper/resources/search_result.rb +0 -17
- data/lib/wrapper/resources/track.rb +0 -19
- data/lib/wrapper/resources/user.rb +0 -11
- data/lib/wrapper/resources/video.rb +0 -11
- data/spec/resource_spec.rb +0 -27
- data/spec/resources/artist_release_spec.rb +0 -59
- data/spec/resources/artist_spec.rb +0 -15
- data/spec/resources/format_spec.rb +0 -41
- data/spec/resources/generic_list_spec.rb +0 -66
- data/spec/resources/image_spec.rb +0 -43
- data/spec/resources/label_release_spec.rb +0 -55
- data/spec/resources/label_spec.rb +0 -15
- data/spec/resources/master_release_spec.rb +0 -15
- data/spec/resources/master_release_version_spec.rb +0 -55
- data/spec/resources/release_artist_spec.rb +0 -43
- data/spec/resources/release_label_spec.rb +0 -31
- data/spec/resources/release_spec.rb +0 -15
- data/spec/resources/search_result_spec.rb +0 -47
- data/spec/resources/search_spec.rb +0 -15
- data/spec/resources/track_spec.rb +0 -56
- data/spec/resources/video_spec.rb +0 -43
@@ -1,21 +0,0 @@
|
|
1
|
-
# Represents an release's artist in the Discogs API.
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + "/track"
|
4
|
-
require File.dirname(__FILE__) + "/master_release"
|
5
|
-
|
6
|
-
class Discogs::Release::Artist < Discogs::Resource
|
7
|
-
|
8
|
-
map_to_plural :artists, :extraartists
|
9
|
-
|
10
|
-
attr_accessor :name,
|
11
|
-
:role,
|
12
|
-
:join,
|
13
|
-
:anv,
|
14
|
-
:tracks
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
# Define other classes that also replicate this structure.
|
19
|
-
class Discogs::Release::Track::Artist < Discogs::Release::Artist; end
|
20
|
-
class Discogs::MasterRelease::Artist < Discogs::Release::Artist; end
|
21
|
-
class Discogs::MasterRelease::Track::Artist < Discogs::Release::Artist; end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# Represents a search resultset in the Discogs API.
|
2
|
-
|
3
|
-
class Discogs::Search < Discogs::Resource
|
4
|
-
|
5
|
-
no_mapping
|
6
|
-
|
7
|
-
attr_accessor :exactresults,
|
8
|
-
:searchresults,
|
9
|
-
:start,
|
10
|
-
:end,
|
11
|
-
:numResults
|
12
|
-
|
13
|
-
def total_results
|
14
|
-
self.numResults.to_i
|
15
|
-
end
|
16
|
-
|
17
|
-
def current_page
|
18
|
-
(start.to_i / page_size) + 1
|
19
|
-
end
|
20
|
-
|
21
|
-
def total_pages
|
22
|
-
(total_results.to_f / page_size).ceil
|
23
|
-
end
|
24
|
-
|
25
|
-
def last_page?
|
26
|
-
current_page == total_pages
|
27
|
-
end
|
28
|
-
|
29
|
-
def exact(filter=nil)
|
30
|
-
filter_results(filter, self.exactresults)
|
31
|
-
end
|
32
|
-
|
33
|
-
def results(filter=nil)
|
34
|
-
filter_results(filter, self.searchresults)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Returns the closest exact result for _filter_, or nil.
|
38
|
-
def closest(filter)
|
39
|
-
exact(filter)[0] rescue nil
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
# An easy way for filtering a particular "type" of result (Artist, Release, etc)
|
45
|
-
def filter_results(filter, results)
|
46
|
-
results ||= []
|
47
|
-
|
48
|
-
if filter.nil?
|
49
|
-
results
|
50
|
-
else
|
51
|
-
results.find_all do |result|
|
52
|
-
result.type == filter.to_s
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def page_size
|
58
|
-
self.end.to_i - (self.start.to_i - 1)
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# Represents a single search result in the Discogs API.
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + "/search"
|
4
|
-
|
5
|
-
class Discogs::Search::Result < Discogs::Resource
|
6
|
-
|
7
|
-
map_to_plural :exactresults, :searchresults
|
8
|
-
|
9
|
-
attr_accessor :num,
|
10
|
-
:type,
|
11
|
-
:title,
|
12
|
-
:uri,
|
13
|
-
:anv,
|
14
|
-
:summary,
|
15
|
-
:thumb
|
16
|
-
|
17
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# Represents a track in the Discogs API.
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + "/release"
|
4
|
-
require File.dirname(__FILE__) + "/master_release"
|
5
|
-
|
6
|
-
class Discogs::Release::Track < Discogs::Resource
|
7
|
-
|
8
|
-
map_to_plural :tracklist
|
9
|
-
|
10
|
-
attr_accessor :position,
|
11
|
-
:title,
|
12
|
-
:duration,
|
13
|
-
:artists,
|
14
|
-
:extraartists
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
# Define other classes that also replicate this structure.
|
19
|
-
class Discogs::MasterRelease::Track < Discogs::Release::Track; end
|
data/spec/resource_spec.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::Resource do
|
4
|
-
|
5
|
-
before do
|
6
|
-
@resource = Discogs::Resource.new(sample_valid_binary)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should have a default element name" do
|
10
|
-
Discogs::Resource.element_names.should == [ :resource ]
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should have a default plural element name" do
|
14
|
-
Discogs::Resource.plural_element_names.should == [ :resources ]
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should have an original_content method" do
|
18
|
-
@resource.original_content.should == sample_valid_binary
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should be able to build the content"
|
22
|
-
|
23
|
-
it "should remove the <resp> element by default"
|
24
|
-
|
25
|
-
it "should leave the <resp> element if told to"
|
26
|
-
|
27
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::Artist::Release do
|
4
|
-
|
5
|
-
it "should map to release" do
|
6
|
-
Discogs::Artist::Release.element_names.should == [ :release ]
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should map to plural releases" do
|
10
|
-
Discogs::Artist::Release.plural_element_names.should == [ :releases ]
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "when asking for artist-release information" do
|
14
|
-
|
15
|
-
before do
|
16
|
-
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_artist_release.xml"))
|
17
|
-
@artist_release = Discogs::Artist::Release.new(data)
|
18
|
-
@artist_release.build!
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should have a ID attribute" do
|
22
|
-
@artist_release.id.should == "999333"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should have a status attribute" do
|
26
|
-
@artist_release.status.should == "Accepted"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should have a role attribute" do
|
30
|
-
@artist_release.role.should == "Main"
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should have a title attribute" do
|
34
|
-
@artist_release.title.should == "Temple of the Underworld"
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should have a format attribute" do
|
38
|
-
@artist_release.format.should == "LP"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should have a label attribute" do
|
42
|
-
@artist_release.label.should == "Monitor Records"
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should have a year attribute" do
|
46
|
-
@artist_release.year.should == "1992"
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should have a trackinfo attribute" do
|
50
|
-
@artist_release.trackinfo.should be_nil
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should have an artist attribute" do
|
54
|
-
@artist_release.artist.should == "ArtIst"
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::Artist do
|
4
|
-
|
5
|
-
it "should map to empty array" do
|
6
|
-
Discogs::Artist.element_names.should == []
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should map plural to empty array" do
|
10
|
-
Discogs::Artist.plural_element_names.should == []
|
11
|
-
end
|
12
|
-
|
13
|
-
## See ./spec/wrapper_methods/get_artist_spec.rb for extensive tests of this class.
|
14
|
-
|
15
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::Release::Format do
|
4
|
-
|
5
|
-
it "should map to format" do
|
6
|
-
Discogs::Release::Format.element_names.should == [ :format ]
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should map to plural formats" do
|
10
|
-
Discogs::Release::Format.plural_element_names.should == [ :formats ]
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "when asking for format information" do
|
14
|
-
|
15
|
-
before do
|
16
|
-
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_format.xml"))
|
17
|
-
@format = Discogs::Release::Format.new(data)
|
18
|
-
@format.build!
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should have a name attribute" do
|
22
|
-
@format.name.should == "CD"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should have a quantity attribute" do
|
26
|
-
@format.qty.should == "1"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should have an array of descriptions" do
|
30
|
-
@format.descriptions.should be_instance_of(Array)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should have built each description" do
|
34
|
-
@format.descriptions[0].should == "Album"
|
35
|
-
@format.descriptions[1].should == "Digipak"
|
36
|
-
@format.descriptions[9].should be_nil
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::GenericList do
|
4
|
-
|
5
|
-
it "should map to all generic lists" do
|
6
|
-
Discogs::GenericList.element_names.should be_instance_of(Array)
|
7
|
-
|
8
|
-
Discogs::GenericList.element_names.include?(:aliases).should be_true
|
9
|
-
Discogs::GenericList.element_names.include?(:urls).should be_true
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should map to plural lists" do
|
13
|
-
Discogs::GenericList.plural_element_names.should == [ :lists ]
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "when asking for description information" do
|
17
|
-
|
18
|
-
before do
|
19
|
-
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_description_list.xml"))
|
20
|
-
@descriptions = Discogs::GenericList.new(data)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should return an array on build" do
|
24
|
-
@descriptions.build!.should be_instance_of(Array)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should have access to the items after build" do
|
28
|
-
@descriptions.build!
|
29
|
-
|
30
|
-
@descriptions[0].should == "Album"
|
31
|
-
@descriptions[1].should == "LP"
|
32
|
-
@descriptions[2].should == "33 rpm"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should return nil on unknown index" do
|
36
|
-
@descriptions[9].should be_nil
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "when asking for genre information" do
|
42
|
-
|
43
|
-
before do
|
44
|
-
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_genre_list.xml"))
|
45
|
-
@genres = Discogs::GenericList.new(data)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should return an array on build" do
|
49
|
-
@genres.build!.should be_instance_of(Array)
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should have access to the items after build" do
|
53
|
-
@genres.build!
|
54
|
-
|
55
|
-
@genres[0].should == "Heavy Metal"
|
56
|
-
@genres[1].should == "Neofolk"
|
57
|
-
@genres[2].should == "Medieval folk"
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should return nil on unknown index" do
|
61
|
-
@genres[9].should be_nil
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::Image do
|
4
|
-
|
5
|
-
it "should map to image" do
|
6
|
-
Discogs::Image.element_names.should == [ :image ]
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should map to plural images" do
|
10
|
-
Discogs::Image.plural_element_names.should == [ :images ]
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "when asking for image information" do
|
14
|
-
|
15
|
-
before do
|
16
|
-
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_image.xml"))
|
17
|
-
@image = Discogs::Image.new(data)
|
18
|
-
@image.build!
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should have a type attribute" do
|
22
|
-
@image.type.should == "primary"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should have a width attribute" do
|
26
|
-
@image.width.should == "600"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should have a height attribute" do
|
30
|
-
@image.height.should == "595"
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should have a uri attribute" do
|
34
|
-
@image.uri.should == "http://www.discogs.com/image/R-666-1222413500.jpeg"
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should have a uri150 attribute" do
|
38
|
-
@image.uri150.should == "http://www.discogs.com/image/R-150-666-1222413500.jpeg"
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Discogs::Label::Release do
|
4
|
-
|
5
|
-
it "should map to release" do
|
6
|
-
Discogs::Label::Release.element_names.should == [ :release ]
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should map to plural releases" do
|
10
|
-
Discogs::Label::Release.plural_element_names.should == [ :releases ]
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "when asking for label-release information" do
|
14
|
-
|
15
|
-
before do
|
16
|
-
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_label_release.xml"))
|
17
|
-
@label_release = Discogs::Label::Release.new(data)
|
18
|
-
@label_release.build!
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should have a ID attribute" do
|
22
|
-
@label_release.id.should == "116322"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should have a status attribute" do
|
26
|
-
@label_release.status.should == "Accepted"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should have a catno attribute" do
|
30
|
-
@label_release.catno.should == "SMB09"
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should have an artist attribute" do
|
34
|
-
@label_release.artist.should == "Morrior"
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should have a title attribute" do
|
38
|
-
@label_release.title.should == "Death Metal Session"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should have a format attribute" do
|
42
|
-
@label_release.format.should == "12\""
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should have a year attribute" do
|
46
|
-
@label_release.year.should == "1991"
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should have a trackinfo attribute" do
|
50
|
-
@label_release.trackinfo.should == "Side A, track 4"
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|