Sha256: 9d50914feda6e5b082f54d5470d776bc31978be31a2c8313df1efcba6a1bbbed

Contents?: true

Size: 768 Bytes

Versions: 7

Compression:

Stored size: 768 Bytes

Contents

module Museum
  class Loupe < ActiveRecord::Base
    extend ::FriendlyId
    friendly_id :title, use: :slugged

    validates_presence_of :title

    def self.id_by_slug(name)
      ( find_by_slug(name) || abort(name) ).id
    end

    def magnify(gem)
      parse_as(data_format, response(gem))
    end

    def url(gem)
      uri_template % { :name => gem.name, :user => Museum.configuration.username }
    end

    def response(gem)
      url(gem).fetch
    end

    def parse_as(format, string)
      begin
        case format
          when 'json'
            JSON.parse string.to_s
          when 'yaml'
            YAML.parse string.to_s
          when 'xml'
            Hash.from_xml(string.to_s)
        end
      rescue
        {}
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
museum-0.3.0 app/models/museum/loupe.rb
museum-0.2.2 app/models/museum/loupe.rb
museum-0.1.5 app/models/museum/loupe.rb
museum-0.1.4 app/models/museum/loupe.rb
museum-0.1.3 app/models/museum/loupe.rb
museum-0.1.2 app/models/museum/loupe.rb
museum-0.1.1 app/models/museum/loupe.rb