Sha256: 48baa8115d998ab28da680b3de4dce8b8a968a9009b50d8f0ef526f1978903ce
Contents?: true
Size: 1.96 KB
Versions: 1
Compression:
Stored size: 1.96 KB
Contents
module Cloudsponge require "net/http" require "net/https" require "uri" begin require 'json' rescue end class Utility def self.object_to_query(object) return object unless object.is_a? Hash object.map{ |k,v| "#{URI.encode(k.to_s)}=#{URI.encode(v.to_s)}" }.join('&') end def self.post_and_decode_response(url, params) # post the response response = post_url(url, params) decode_response(response) end def self.get_and_decode_response(full_url) # get the response response = get_url(full_url) decode_response(response) end def self.decode_response(response) if response.code_type == Net::HTTPOK # decode the response into an asscoiative array resp = decode_response_body(response.body, 'json') raise CsException.new(resp['error']['message'], response['code']) if resp['error'] else raise CsException.new(response.body, response.code) end resp end def self.decode_response_body(response, format = 'json') # TODO: account for systems that use a different JSON parser. Look for json gem... # TODO: implement alternate formats: XML object = {'error' => {'message' => 'failed to parse data.', 'code' => 1}} begin object = ActiveSupport::JSON.decode(response) rescue begin object = JSON.parse(response) rescue end end object end def self.get_url(url) url = URI.parse(url) open_http(url).get("#{url.path}?#{url.query}") end def self.post_url(url, params) url = URI.parse(url) open_http(url).post("#{url.path}","#{object_to_query(params)}") end def self.open_http(url) http = Net::HTTP.new(url.host, url.port) # @csimport_http.read_timeout = @timeout || 30 if url.port == 443 http.use_ssl = true end http.start unless http.started? http end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cloudsponge-0.9.13 | lib/cloudsponge/utility.rb |