module Egalite::HTTP
Public Class Methods
get(url, options = {})
click to toggle source
# File lib/egalite/http.rb, line 52 def self.get(url, options = {}) params = options[:params] if params.is_a?(Hash) params = URI.encode_www_form(params) end if params.is_a?(String) if url =~ /\?/ url << "&" else url << "?" end url << params end parse_options(options) (http, uri) = parse_url(url, options) resp = http.get(uri.request_uri, options[:header]) parse_response(resp) end
parse_options(options)
click to toggle source
# File lib/egalite/http.rb, line 31 def self.parse_options(options) if options[:basic_auth] u = options[:basic_auth][0] pw = options[:basic_auth][1] b = ["#{u}:#{pw}"].pack("m") options[:header] ||= {} options[:header]["Authorization"] = "Basic #{b}".chop end end
parse_response(response)
click to toggle source
# File lib/egalite/http.rb, line 40 def self.parse_response(response) ret = {} ret[:body] = response.body ret[:headers] = response.each {} ret[:headers] = Hash[ret[:headers].map { |k,v| [k.tr("-","_").downcase.to_sym,v[0]] }] ret[:headers][:content_length] = ret[:headers][:content_length].to_i ret[:headers][:date] = Time.parse(ret[:headers][:date]) rescue ret[:headers][:date] ret[:code] = response.code.to_i ret end
parse_url(url, options)
click to toggle source
# File lib/egalite/http.rb, line 7 def self.parse_url(url, options) uri = URI.parse(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 if options[:continue_timeout] http.continue_timeout = options[:continue_timeout] end if options[:keep_alive_timeout] http.keep_alive_timeout = options[:keep_alive_timeout] end if options[:open_timeout] http.open_timeout = options[:open_timeout] end if options[:read_timeout] http.read_timeout = options[:read_timeout] end if options[:ssl_timeout] http.ssl_timeout = options[:ssl_timeout] end [http, uri] end
post(url, body = nil, options = {})
click to toggle source
# File lib/egalite/http.rb, line 70 def self.post(url, body = nil, options = {}) uri = parse_url(url,options) if body.is_a?(Hash) body = URI.encode_www_form(body) end parse_options(options) (http, uri) = parse_url(url, options) resp = http.post(uri.request_uri, body, options[:header]) parse_response(resp) end