class EchoNest::Request

Constants

BASE_URL

Attributes

bucket_params[R]
params[R]
path[R]

Public Class Methods

get(path, opts={}) click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 23
def self.get(path, opts={})
  request = Request.new(path, opts)
  request.get_response
end
new(path, opts={}) click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 13
def initialize(path, opts={})
  @path = path
  @params = opts
  @bucket_params = if bucket = opts.delete(:bucket)
    bucket.is_a?(Array) ? bucket : [bucket]
  else
    []
  end
end

Public Instance Methods

api_key() click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 70
def api_key
  EchoNest.config.api_key
end
build_params() click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 50
def build_params
  {param_name => params}
end
build_response(data) click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 46
def build_response(data)
  Response.new(:raw_json => data.to_str, :request => self)
end
build_url() click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 54
def build_url
  url = url_with_creds
  if params.any?
    parts = []
    params.each_pair do |name, value|
      parts << "#{URI.escape(name.to_s)}=#{URI.escape(value.to_s)}"
    end
    bucket_params.each do |value|
      parts << "bucket=#{value}"
    end
    url = "#{url}&#{parts.join('&')}"
  end
  # puts "url: #{url.inspect}"
  url
end
get_response() click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 28
def get_response
  response = RestClient.get(build_url) do |response, request, result, &block|
    # puts "response.code: #{response.code.inspect}"
    # puts "response.body: #{response.body.inspect}"
    if [200, 400].include? response.code
      build_response(response.body)
    else
      raise RequestException, "Unexpected response code: #{response.code}"
    end
  end

  if response.error?
    raise RequestException, "The following errors were returned: #{response.message.inspect}"
  else
    response
  end
end
url_with_creds() click to toggle source
# File lib/another_echonest_ruby_api/request.rb, line 74
def url_with_creds
  "#{BASE_URL}#{path}?api_key=#{api_key}&format=json"
end