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