Skip to content

Commit

Permalink
Merge remote-tracking branch 'danbee/feature/find-release-by-discid' …
Browse files Browse the repository at this point in the history
…into feature/find-release-by-discid
  • Loading branch information
jvoegele committed Mar 13, 2015
2 parents aee6f80 + 97b0c50 commit 33e280e
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/musicbrainz.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
require "musicbrainz/bindings/artist"
require "musicbrainz/bindings/artist_search"
require "musicbrainz/bindings/artist_release_groups"
require "musicbrainz/bindings/discid_releases"
require "musicbrainz/bindings/relations"
require "musicbrainz/bindings/release_group"
require "musicbrainz/bindings/release_group_search"
Expand Down
13 changes: 13 additions & 0 deletions lib/musicbrainz/bindings/discid_releases.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module MusicBrainz
module Bindings
module DiscidReleases
def parse(xml)
xml.xpath('./disc/release-list/release').map do |xml|
MusicBrainz::Bindings::Release.parse(xml)
end
end

extend self
end
end
end
9 changes: 8 additions & 1 deletion lib/musicbrainz/models/release.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class Release < BaseModel
field :asin, String
field :barcode, String
field :quality, String

def tracks
@tracks ||= client.load(:release, { id: id, inc: [:recordings, :media], limit: 100 }, {
binding: :release_tracks,
Expand All @@ -26,6 +26,13 @@ def find(id)
create_model: :release
})
end

def find_by_discid(id)
client.load(:discid, { id: id }, {
binding: :discid_releases,
create_models: :release
})
end
end
end
end
8 changes: 8 additions & 0 deletions spec/models/release_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,12 @@
expect(tracks.first.title).to eq "Empire"
expect(tracks.first.length).to eq 233013
end

it "gets a list of matching releases for a discid" do
releases = MusicBrainz::Release.find_by_discid("pmzhT6ZlFiwSRCdVwV0eqire5_Y-")
releases.length.should == 2
releases.first.id.should == "7a31cd5f-6a57-4fca-a731-c521df1d3b78"
releases.first.title.should == "Kveikur"
releases.first.asin.should == "B00C1GBOU6"
end
end

0 comments on commit 33e280e

Please sign in to comment.