Class: GDocsAPIWrapper::HTTP::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/gdocsapi-wrapper/http/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, options = {}) ⇒ Request

Returns a new instance of Request.



34
35
36
37
38
39
40
41
42
# File 'lib/gdocsapi-wrapper/http/request.rb', line 34

def initialize(url, options = {})
  @url = url
  options.each do |key, value|
    self.send("#{key}=", value)
  end
  
  @method ||= :get
  @headers ||= {}
end

Instance Attribute Details

#bodyObject

Returns the value of attribute body.



30
31
32
# File 'lib/gdocsapi-wrapper/http/request.rb', line 30

def body
  @body
end

#headersObject

Returns the value of attribute headers.



32
33
34
# File 'lib/gdocsapi-wrapper/http/request.rb', line 32

def headers
  @headers
end

#methodObject

Returns the value of attribute method.



31
32
33
# File 'lib/gdocsapi-wrapper/http/request.rb', line 31

def method
  @method
end

#urlObject

Returns the value of attribute url.



29
30
31
# File 'lib/gdocsapi-wrapper/http/request.rb', line 29

def url
  @url
end

Instance Method Details

#send_requestObject



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
82
83
84
85
86
87
88
89
90
# File 'lib/gdocsapi-wrapper/http/request.rb', line 44

def send_request
  uri = URI.parse(@url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == 'https')
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  
  case @method
  when :get
    req = Net::HTTP::Get.new(uri.request_uri)
  when :post
    req = Net::HTTP::Post.new(uri.request_uri)
  when :put
    req = Net::HTTP::Put.new(uri.request_uri)
  when :delete
    req = Net::HTTP::Delete.new(uri.request_uri)
  else
    raise ArgumentError, 'Unsupported HTTP Method' + request.method
  end
  
  case @body
  when String
    req.body = @body
  when Hash
    req.set_form_data(@body)
  when File
    req.body_stream = @body
    request.chunked = true
  else
    req.body = @body.to_s
  end
  
  @headers.each do |key, value|
    req[key] = value
  end
  req['GData-Version'] ||= '2.0'
  
  res = http.request(req)
  
  response = GDocsAPIWrapper::HTTP::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