class ResourceAccessor
Constants
- VERSION
Attributes
ca_file[RW]
timeout[RW]
validate_ssl_cert[RW]
validate_ssl_cert?[RW]
Public Class Methods
new(timeout = 10000, ca_file = nil, validate_ssl_cert = false)
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 10 def initialize(timeout = 10000, ca_file = nil, validate_ssl_cert = false) @timeout = timeout @ca_file = ca_file @validate_ssl_cert = validate_ssl_cert end
query_from_hash(params, escape=true)
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 50 def self.query_from_hash(params, escape=true) return nil if params.nil? or params.empty? encode params, escape end
Private Class Methods
append_key(root_key, key)
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 142 def self.append_key(root_key, key) root_key.nil? ? key : "#{root_key}[#{key.to_s}]" end
encode(value, escape=true, key = nil)
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 132 def self.encode(value, escape=true, key = nil) case value when Hash then value.map { |k,v| encode(v, escape, append_key(key,k)) }.join('&') when Array then value.map { |v| encode(v, escape, "#{key}[]") }.join('&') when nil then "#{key}=" else escape ? "#{key}=#{CGI.escape(value.to_s)}" : "#{key}=#{value.to_s}" end end
Public Instance Methods
execute_request(url, query, method, headers, body, escape, cookie=nil)
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 75 def execute_request(url, query, method, headers, body, escape, cookie=nil) headers['User-Agent'] = "Ruby/#{RUBY_VERSION}" unless headers['User-Agent'] headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' unless headers['Content-Type'] if cookie headers['Cookie'] = cookie end query_string = ResourceAccessor.query_from_hash(query, escape) new_url = query_string.nil? ? url : "#{url}?#{query_string}" # new_url = escape ? URI.escape(new_url) : new_url uri = URI.parse(URI.escape(new_url)) connection = Net::HTTP.new(uri.host, uri.port) if uri.scheme == 'https' connection.use_ssl = true if validate_ssl_cert? connection.ca_file = ca_file connection.verify_mode = OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT else connection.verify_mode = OpenSSL::SSL::VERIFY_NONE end end #request.basic_auth(@username, @password) unless @username method = :get if method.nil? if method == :get request = Net::HTTP::Get.new(uri.request_uri, headers) elsif method == :post request = Net::HTTP::Post.new(uri.request_uri, headers) request.body = body if body.kind_of? String request.set_form_data(body) if body.kind_of? Hash elsif method == :put request = Net::HTTP::Put.new(uri.request_uri, headers) request.body = body if body.kind_of? String request.set_form_data(body) if body.kind_of? Hash else request = Net::HTTP::Get.new(uri.request_uri, headers) end connection.read_timeout = timeout connection.open_timeout = timeout Timeout.timeout(timeout) do return connection.request(request) end end
get_ajax_response(params, headers = {})
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 28 def get_ajax_response(params, headers = {}) headers['X-Requested-With'] = 'XMLHttpRequest' locate_response(params[:url], params[:query], params[:method], headers, params[:body], params[:escape], params[:cookie]) end
get_json_response(params, headers = {})
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 34 def get_json_response(params, headers = {}) headers['Content-Type'] = 'application/json;charset=UTF-8' locate_response(params[:url], params[:query], params[:method], headers, params[:body], params[:escape], params[:cookie]) end
get_response(params, headers = {})
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 16 def get_response(params, headers = {}) locate_response(params[:url], params[:query], params[:method], headers, params[:body], params[:escape], params[:cookie]) end
get_soap_response(params, headers = {})
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 20 def get_soap_response(params, headers = {}) headers['SOAPAction'] = params[:soap_action] if params[:soap_action] headers['SOAPAction'] = '' unless headers['SOAPAction'] headers['Content-Type'] = 'text/xml;charset=UTF-8' unless headers['Content-Type'] locate_response(params[:url], params[:query], params[:method], headers, params[:body], params[:escape], params[:cookie]) end
locate_response(url, query, method, headers, body, escape=true, cookie=nil)
click to toggle source
# File lib/resource_accessor/resource_accessor.rb, line 56 def locate_response(url, query, method, headers, body, escape=true, cookie=nil) response = execute_request url, query, method, headers, body, escape, cookie if response.class == Net::HTTPMovedPermanently location = response['location'] if URI(location).scheme new_uri = URI(location) else new_uri = URI(url) new_uri.path = location end response = execute_request new_uri.to_s, query, method, headers, body, escape, cookie end response end