class MingleAPI::Http

Public Class Methods

new(credentials) click to toggle source
# File lib/mingle-api/http.rb, line 14
def initialize(credentials)
  @credentials = credentials
end

Public Instance Methods

get(url) click to toggle source
# File lib/mingle-api/http.rb, line 18
def get(url)
  process(Net::HTTP::Get, url)
end
post(url, params) click to toggle source
# File lib/mingle-api/http.rb, line 22
def post(url, params)
  process(Net::HTTP::Post::Multipart, url, params)
end
process(request_class, url, form_data={}, headers=nil) click to toggle source
# File lib/mingle-api/http.rb, line 26
def process(request_class, url, form_data={}, headers=nil)
  uri = URI(url)
  http = Net::HTTP.new(uri.host, uri.port)

  if uri.scheme == 'https'
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end

  request = request_class.new(uri.request_uri, form_data)

  if headers
    headers.each do |key, value|
      request[key] = value
    end
  end

  if @credentials[:hmac]
    ApiAuth.sign!(request, *@credentials[:hmac])
  elsif @credentials[:basic_auth]
    request.basic_auth *@credentials[:basic_auth]
  end

  response = http.request(request)
  raise Error.new(request_class, url, response) if response.code.to_i >= 300

  to_canonical_response(response)
end
to_canonical_response(response) click to toggle source
# File lib/mingle-api/http.rb, line 55
def to_canonical_response(response)
  headers = {}
  response.each_header {|key, value|  headers[key] = value }
  [response.code.to_i, response.body, headers]
end