Method: Croesus::WebRequest#initialize

Defined in:
lib/croesus/web_client/web_request.rb

#initialize(method, url, headers = {}, body = nil) ⇒ WebRequest

Returns a new instance of WebRequest.



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
# File 'lib/croesus/web_client/web_request.rb', line 34

def initialize(method, url, headers = {}, body = nil)
  @method = method

  if (method == :get)
    if body.is_a?(Hash) && body.length > 0
      if url.include? "?"
        url += "&"
      else
        url += "?"
      end

      uri = Addressable::URI.new
      uri.query_values = body
      url += uri.query
    end
  else
     @body = body
  end

  unless url =~ URI.regexp
    raise "Invalid URL: " + url
  end

  @url = url.gsub(/\s+/, '%20')

  @headers = {
    'Date'       => utc_httpdate,
    'Request-ID' => request_id,
  }

  headers.each_pair {|key, value| @headers[key.downcase] = value }

  Croesus.last_request = {
    headers: @headers,
    method: @method,
    url: @url
  }
  begin
    Croesus.last_request[:body] = JSON.parse(@body) if body.length > 2
  rescue Exception
  end
end