Sha256: 36fcfb91842415df2dfda0f61c575af342a0f33b08333f9437ba66e79f5b04f5

Contents?: true

Size: 1.92 KB

Versions: 6

Compression:

Stored size: 1.92 KB

Contents

module Firstfm
  
  class Venue
    
    attr_accessor :id, :name, :url, :location, :website, :phonenumber, :images
    
    include HTTParty
    base_uri 'ws.audioscrobbler.com'
    format :xml
    
    def self.search(venue, page = 1, limit = 50, country = nil)
      response = get("/2.0/", {:query => {:method => 'venue.search', :venue => venue, :page => page, :limit => limit, :country => country, :api_key => Firstfm::CONFIG['api_key']}})
      venues = response && response['lfm'] ? Venue.init_venues_from_hash(response['lfm']) : []
      collection = WillPaginate::Collection.create(page, limit) do |pager|
        pager.replace venues
        pager.total_entries = response['lfm']['results']['opensearch:totalResults'].to_i
      end
    end
    
    def self.get_events(venue_id)
      response = get("/2.0/", {:query => {:method => 'venue.getEvents', :venue => venue_id, :api_key => Firstfm::CONFIG['api_key']}})
      events = response && response['lfm'] ? Event.init_events_from_hash(response['lfm']) : []
    end
    
    def get_events
      self.class.get_events(self.id)
    end
    
    def self.init_venues_from_hash(hash)
      return [] unless hash["results"] && hash["results"]["venuematches"] && hash["results"]["venuematches"]["venue"]
      return [init_venue_from_hash(hash["results"]["venuematches"]["venue"])] if hash["results"]["venuematches"]["venue"].is_a?(Hash)
      hash["results"]["venuematches"]["venue"].inject([]) do |arr, venue_hash|
        arr << init_venue_from_hash(venue_hash)
        arr
      end
    end
    
    def self.init_venue_from_hash(hash)
      venue = Venue.new
      venue.id          = hash["id"]
      venue.name        = hash["name"]
      venue.url         = hash["url"]
      venue.location    = Location.init_location_from_hash(hash["location"])
      venue.website     = hash["website"]
      venue.phonenumber = hash["phonenumber"]
      venue.images = hash["image"]
      venue
    end
    
  end
  
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
firstfm-0.2.0 lib/firstfm/venue.rb
firstfm-0.1.2 lib/firstfm/venue.rb
firstfm-0.1.1 lib/firstfm/venue.rb
firstfm-0.1.0 lib/firstfm/venue.rb
firstfm-0.0.2 lib/firstfm/venue.rb
firstfm-0.0.1 lib/firstfm/venue.rb