class Nehm::HTTPClient

Constants

CLIENT_ID

SoundCloud API client ID

Public Instance Methods

get(api_version, uri_string) click to toggle source
# File lib/nehm/http_client.rb, line 19
def get(api_version, uri_string)
  uri = form_uri(api_version, uri_string)
  get_hash(uri)
end
resolve(url) click to toggle source
# File lib/nehm/http_client.rb, line 24
def resolve(url)
  response = get(1, "/resolve?url=#{url}")

  errors = response['errors']
  if errors
    if errors[0]['error_message'] =~ /404/
      raise Status404
    else
      raise ConnectionError # HACK
    end
  end

  get_hash(response['location']) if response['status'] =~ /302/
end

Private Instance Methods

form_uri(api_version, uri_string) click to toggle source
# File lib/nehm/http_client.rb, line 41
def form_uri(api_version, uri_string)
  uri =
    case api_version
    when 1
      'https://api.soundcloud.com'
    when 2
      'https://api-v2.soundcloud.com'
    end
  uri += uri_string
  uri += "&client_id=#{CLIENT_ID}" if api_version == 1

  uri
end
get_hash(uri) click to toggle source
# File lib/nehm/http_client.rb, line 55
def get_hash(uri)
  uri = URI.parse(URI.escape(uri))
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  res = http.get(uri.request_uri)
  JSON.parse(res.body)
end