class CloudPrint::Connection
Public Class Methods
new(client)
click to toggle source
# File lib/cloudprint/connection.rb, line 8 def initialize client @client = client end
Public Instance Methods
get(path, params = {})
click to toggle source
# File lib/cloudprint/connection.rb, line 12 def get(path, params = {}) response = request(:get, path, params) parse_response(response) end
multipart_post(path, params = {})
click to toggle source
# File lib/cloudprint/connection.rb, line 22 def multipart_post(path, params = {}) response = request(:multipart, path, params) parse_response(response) end
post(path, params = {})
click to toggle source
# File lib/cloudprint/connection.rb, line 17 def post(path, params = {}) response = request(:post, path, params) parse_response(response) end
Private Instance Methods
build_get_uri(uri, params = {})
click to toggle source
# File lib/cloudprint/connection.rb, line 79 def build_get_uri(uri, params = {}) uri = uri.dup uri.query = params.any? ? URI.encode_www_form(params) : nil uri.request_uri end
build_http_connection(uri)
click to toggle source
# File lib/cloudprint/connection.rb, line 85 def build_http_connection(uri) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE http end
build_request(options)
click to toggle source
# File lib/cloudprint/connection.rb, line 52 def build_request(options) method = options[:method] uri = options[:uri] request = case method when :multipart req = Net::HTTP::Post.new(uri.request_uri) # Convert hash keys to strings, because that's what Net::HTTPGenericRequest#encode_multipart_form_data assumes they are req.set_form(options[:params].inject({}) {|memo, (k,v)| memo[k.to_s] = v; memo }, 'multipart/form-data') req when :post req = Net::HTTP::Post.new(uri.request_uri) req.set_form_data(options[:params]) req else req = Net::HTTP::Get.new(build_get_uri(uri, options[:params])) end set_request_headers(request) request end
full_url_for(path)
click to toggle source
# File lib/cloudprint/connection.rb, line 93 def full_url_for(path) "https://www.google.com/cloudprint" + path end
make_http_request(options = {})
click to toggle source
# File lib/cloudprint/connection.rb, line 43 def make_http_request(options = {}) method = options[:method] uri = URI.parse(options[:url]) http = build_http_connection(uri) request = build_request(:method => method, :uri => uri, :params => options[:params]) http.request(request) end
parse_response(response)
click to toggle source
# File lib/cloudprint/connection.rb, line 29 def parse_response(response) begin JSON.parse(response.body) rescue => e puts response.body raise e end end
request(method, path, params)
click to toggle source
# File lib/cloudprint/connection.rb, line 38 def request(method, path, params) url = full_url_for(path) make_http_request(:method => method, :url => url, :params => params) end
set_request_headers(request)
click to toggle source
# File lib/cloudprint/connection.rb, line 74 def set_request_headers(request) request['Authorization'] = "OAuth " + @client.access_token request['X-CloudPrint-Proxy'] = 'api-prober' end