Class: BrainzReleases::Search
- Inherits:
-
Object
- Object
- BrainzReleases::Search
- Defined in:
- lib/brainz_releases/search.rb
Defined Under Namespace
Classes: ConfigError, Error, ResponseError
Instance Attribute Summary collapse
-
#end_date ⇒ Object
Returns the value of attribute end_date.
-
#mbid ⇒ Object
Returns the value of attribute mbid.
-
#name ⇒ Object
Returns the value of attribute name.
-
#start_date ⇒ Object
Returns the value of attribute start_date.
-
#user_agent ⇒ Object
Returns the value of attribute user_agent.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(*args, &block) ⇒ Search
constructor
A new instance of Search.
- #releases_xml ⇒ Object
-
#results ⇒ Object
Returns an array of BrainzReleases::Release objects.
-
#uri ⇒ Object
Musicbrainz uri to request releases.
Constructor Details
#initialize(*args, &block) ⇒ Search
Returns a new instance of Search.
20 21 22 23 24 |
# File 'lib/brainz_releases/search.rb', line 20 def initialize(*args, &block) (block.arity < 1 ? self.instance_eval(&block) : block.call(self)) if block raise ConfigError, "You must provide a :name or :mbid parameter" if [name, mbid].all?(&:nil?) raise ConfigError, "You must provide a user_agent parameter to identify your requests" if user_agent.nil? end |
Instance Attribute Details
#end_date ⇒ Object
Returns the value of attribute end_date.
14 15 16 |
# File 'lib/brainz_releases/search.rb', line 14 def end_date @end_date end |
#mbid ⇒ Object
Returns the value of attribute mbid.
14 15 16 |
# File 'lib/brainz_releases/search.rb', line 14 def mbid @mbid end |
#name ⇒ Object
Returns the value of attribute name.
14 15 16 |
# File 'lib/brainz_releases/search.rb', line 14 def name @name end |
#start_date ⇒ Object
Returns the value of attribute start_date.
14 15 16 |
# File 'lib/brainz_releases/search.rb', line 14 def start_date @start_date end |
#user_agent ⇒ Object
Returns the value of attribute user_agent.
14 15 16 |
# File 'lib/brainz_releases/search.rb', line 14 def user_agent @user_agent end |
Class Method Details
Instance Method Details
#releases_xml ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/brainz_releases/search.rb', line 41 def releases_xml http = Net::HTTP.new(uri.host) request = Net::HTTP::Get.new(uri.request_uri, {"User-Agent" => user_agent}) response = http.request(request) case response.code when "200" @releases_xml = Nokogiri::XML(response.body) else raise ResponseError, "There is a problem accessing the Music Brainz api" end end |
#results ⇒ Object
Returns an array of BrainzReleases::Release objects
54 55 56 57 58 59 60 |
# File 'lib/brainz_releases/search.rb', line 54 def results (releases = []).tap do releases_xml.xpath('//xmlns:release').each do |node| releases << BrainzReleases::Release.build_from_node(node) end end end |
#uri ⇒ Object
Musicbrainz uri to request releases
37 38 39 |
# File 'lib/brainz_releases/search.rb', line 37 def uri URI.parse("http://musicbrainz.org/ws/2/release/?type=xml&query=#{query}") end |