Method: GoogleDrive::Session#request

Defined in:
lib/google_drive/session.rb

#request(method, url, params = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
# File 'lib/google_drive/session.rb', line 462

def request(method, url, params = {})
  # Always uses HTTPS.
  url           = url.gsub(%r{^http://}, 'https://')
  data          = params[:data]
  auth          = params[:auth] || :wise
  response_type = params[:response_type] || :xml

  if params[:header]
    extra_header = params[:header]
  elsif data
    extra_header = { 'Content-Type' => 'application/atom+xml;charset=utf-8' }
  else
    extra_header = {}
  end
  extra_header = { 'GData-Version' => '3.0' }.merge(extra_header)

  loop do
    response = @fetcher.request_raw(method, url, data, extra_header, auth)
    next if response.code == '401' && @on_auth_fail && @on_auth_fail.call
    unless response.code =~ /^2/
      fail((response.code == '401' ? AuthenticationError : ResponseCodeError)
             .new(response.code, response.body, method, url))
    end
    return convert_response(response, response_type)
  end
end