class Echonest::Base

Public Class Methods

base_uri() click to toggle source

Gets the base URI for all API calls

Returns a String

# File lib/echonest-ruby-api/base.rb, line 60
def self.base_uri
  "http://developer.echonest.com/api/v#{version}/"
end
get_api_endpoint(api_key, endpoint, options = {}) click to toggle source

Gets an arbitrary Echonest endpoint

# File lib/echonest-ruby-api/base.rb, line 65
def self.get_api_endpoint(api_key, endpoint, options = {})
  options.merge!(api_key: api_key,
                       format: "json")
  httparty_options = { query_string_normalizer: HTTParty::Request::NON_RAILS_QUERY_STRING_NORMALIZER,
                       query: options }

  response = HTTParty.get("#{ base_uri }#{ endpoint }", httparty_options)
  json = MultiJson.load(response.body, symbolize_keys: true)
  response_code = json[:response][:status][:code]

  if response_code.eql?(0)
    json[:response]
  else
    error = Echonest::Error.new(response_code, response)
    raise error, "Error code #{response_code}: #{error.description}"
  end
end
new(api_key) click to toggle source
# File lib/echonest-ruby-api/base.rb, line 8
def initialize(api_key)
  @api_key = api_key
  @base_uri = "http://developer.echonest.com/api/v4/"
end
version() click to toggle source

The current version of the Echonest API to be supported.

Returns a Fixnum

# File lib/echonest-ruby-api/base.rb, line 86
def self.version
  4
end

Public Instance Methods

endpoint() click to toggle source
# File lib/echonest-ruby-api/base.rb, line 21
def endpoint
  calling_method = caller[1].split('`').last[0..-2]
  "#{ entity_name }/#{ calling_method }"
end
entity_name() click to toggle source
# File lib/echonest-ruby-api/base.rb, line 17
def entity_name
  self.class.to_s.split('::').last.downcase
end
get(endpoint, options = {}) click to toggle source

Performs a simple HTTP get on an API endpoint.

Examples:

get('artist/biographies', results: 10)
#=> Array of Biography objects.

Raises an ArgumentError if the Echonest API responds with an error.

  • endpoint - The name of an API endpoint as a String

  • options - A Hash of options to pass to the end point.

Returns a response as a Hash

# File lib/echonest-ruby-api/base.rb, line 39
def get(endpoint, options = {})
  Base.get_api_endpoint(@api_key, endpoint, options)
end
get_response(options = {}) click to toggle source
# File lib/echonest-ruby-api/base.rb, line 13
def get_response(options = {})
  get(endpoint, options)
end
which(cmd) click to toggle source

Cross-platform way of finding an executable in the $PATH.

which('ruby') #=> /usr/bin/ruby
# File lib/echonest-ruby-api/base.rb, line 46
def which(cmd)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
    exts.each { |ext|
      exe = File.join(path, "#{ cmd }#{ ext }")
      return exe if File.executable? exe
    }
  end
  return nil
end