Class: GData::HTTP::DefaultService
- Inherits:
-
Object
- Object
- GData::HTTP::DefaultService
- Defined in:
- lib/gdata/http/default_service.rb
Overview
This is the default implementation of the HTTP layer that uses Net::HTTP. You could roll your own if you have different requirements or cannot use Net::HTTP for some reason.
Instance Method Summary collapse
-
#make_request(request) ⇒ Object
Take a GData::HTTP::Request, execute the request, and return a GData::HTTP::Response object.
Instance Method Details
#make_request(request) ⇒ Object
Take a GData::HTTP::Request, execute the request, and return a GData::HTTP::Response object.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/gdata/http/default_service.rb', line 30 def make_request(request) url = URI.parse(request.url) proxy = URI::parse((url.scheme == 'https' ? ENV['https_proxy'] : ENV['http_proxy']) || '') http = Net::HTTP.new(url.host, url.port, proxy.host, proxy.port) http.use_ssl = (url.scheme == 'https') http.verify_mode = OpenSSL::SSL::VERIFY_NONE case request.method when :get req = Net::HTTP::Get.new(url.request_uri) when :put req = Net::HTTP::Put.new(url.request_uri) when :post req = Net::HTTP::Post.new(url.request_uri) when :delete req = Net::HTTP::Delete.new(url.request_uri) else raise ArgumentError, "Unsupported HTTP method specified." end case request.body when String req.body = request.body when Hash req.set_form_data(request.body) when File req.body_stream = request.body request.chunked = true when GData::HTTP::MimeBody req.body_stream = request.body request.chunked = true else req.body = request.body.to_s end request.headers.each do |key, value| req[key] = value end request.calculate_length! res = http.request(req) response = Response.new response.body = res.body response.headers = Hash.new res.each do |key, value| response.headers[key] = value end response.status_code = res.code.to_i return response end |