module RSimperium::ApiHelpers

Public Instance Methods

api_auth_header() click to toggle source
# File lib/r_simperium/api_helpers.rb, line 8
def api_auth_header
  if @host == 'auth.simperium.com'
    {'X-Simperium-API-Key' => "#{@api_key}"}
  elsif @host == 'api.simperium.com'
    {'X-Simperium-Token' => "#{@auth_token}"}
  else
    {}
  end
end
api_meta(headers) click to toggle source
# File lib/r_simperium/api_helpers.rb, line 51
def api_meta(headers)
  meta = {}
  headers.each {|k,v|
    new_key = RSimperium::META_MAP[k]
    next if new_key.nil?
    if v =~ /^[-+]?[0-9]+$/
      meta[new_key] = v.to_i
    else
      meta[new_key] = v
    end
  }
  OpenStruct.new(meta)
end
api_request(method, url, options={}) click to toggle source
# File lib/r_simperium/api_helpers.rb, line 18
def api_request(method, url, options={})
  RSimperium.log "> Api Request: #{method.to_s.upcase} #{url}"
  RSimperium.log "      Options: #{options}"
  request = options.merge(:method => method, :url => url)
  request[:headers] ||= {}
  request[:headers][:accept] ||= :json

  request[:timeout] = -1 if options[:timeout] == false

  if request[:params]
    request[:params].each do |k,v|
      request[:params][k] = '1' if v == true
    end
    # RestClient is weird, it wants the params in the headers hash
    request[:headers][:params] = request[:params]
  end

  response = RestClient::Request.execute request
  RSimperium.log ">> Response: #{response}\n\n"
  begin
    parsed = (response && response.length >= 2) ? MultiJson.decode(response) : response
    Struct::ApiResponse.new(api_meta(response.headers), parsed, response)
  rescue JSON::ParserError
    Struct::ApiResponse.new(api_meta(response.headers), response.to_s, response)
  end
end
api_request_with_auth(method, url, options={}) click to toggle source
# File lib/r_simperium/api_helpers.rb, line 45
def api_request_with_auth(method, url, options={})
  options[:headers] ||= {}
  options[:headers].merge! api_auth_header
  api_request(method, url, options)
end
api_url(path) click to toggle source
# File lib/r_simperium/api_helpers.rb, line 4
def api_url(path)
  "#{@scheme}://#{@host}/1/#{@app_id}#{path}"
end