class Mingle::HttpClient
Attributes
base_url[RW]
Public Class Methods
new(username, password)
click to toggle source
# File lib/mingle/http_client.rb, line 10 def initialize(username, password) @username = username @password = password end
Public Instance Methods
get(path, params={})
click to toggle source
# File lib/mingle/http_client.rb, line 15 def get(path, params={}) url = File.join(base_url, path + to_url(params)) logger.debug "HTTP GET #{url}" process(Net::HTTP::Get, url) end
put(path, params={})
click to toggle source
# File lib/mingle/http_client.rb, line 21 def put(path, params={}) url = url = File.join(base_url, path) body = params.delete :body process(Net::HTTP::Put, url, params, body) end
Private Instance Methods
process(request_class, url, headers={}, body=nil)
click to toggle source
# File lib/mingle/http_client.rb, line 38 def process(request_class, url, headers={}, body=nil) uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' request = request_class.new(uri.request_uri) request.basic_auth @username, @password request.body = body if body.tap { logger.debug("HTTP body: #{body}") if body } headers.each do |key, value| request[key] = value end response = http.request(request) response.tap do raise "Unexpected response of #{response.code} to #{url}" unless response.code.to_i >= 200 && response.code.to_i < 400 end end
to_url(params)
click to toggle source
# File lib/mingle/http_client.rb, line 29 def to_url(params) params.inject([]) do |memo, pair| memo.tap do |memo| key, value = *pair memo << "#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}" end end.join("&").tap { |params| return "?#{params}" unless params.empty? } end