Class: Restfolia::HTTP::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/restfolia/http/request.rb

Overview

Public: Wraps Net::HTTP interface.

Class Method Summary collapse

Class Method Details

.do_request(method, url, args = {}) ⇒ Object

Public: Do a HTTP Request.

method - HTTP verb to be used. Options: :get, :post, :put, :delete url - a String to request. (ex: fake.com/service) args - Hash options to build request (default: {}):

:query   - String to be set with url (optional).
:body    - String to be set with request (optional).
:headers - Hash with headers to be sent in request (optional).

Returns an instance of Net::HTTPResponse.

Raises URI::InvalidURIError if url attribute is invalid.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/restfolia/http/request.rb', line 18

def self.do_request(method, url, args = {})
  query = args[:query]
  body = args[:body]

  uri = URI.parse(url)
  uri.query = query if query

  http = Net::HTTP.new(uri.host, uri.port)
  verb = case method
         when :get
           Net::HTTP::Get.new(uri.request_uri)
         when :post
           Net::HTTP::Post.new(uri.request_uri)
         when :put
           Net::HTTP::Put.new(uri.request_uri)
         when :delete
           Net::HTTP::Delete.new(uri.request_uri)
         else
           msg = "Method have to be one of: :get, post, :put, :delete"
           raise ArgumentError, msg
         end
  verb.body = body if body
  if (headers = args[:headers])
    headers.each do |header, value|
      verb[header] = value
    end
  end
  if (cookies = args[:cookies])
    verb["Cookie"] = cookies
  end

  http.request(verb)
end