Class: ActiveResource::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/rack_direct/active_resource.rb

Instance Method Summary collapse

Instance Method Details

#request_with_filtering_rack_direct(method, path, *arguments) ⇒ Object Also known as: request



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rack_direct/active_resource.rb', line 9

def request_with_filtering_rack_direct(method, path, *arguments)

  # passthrough anything we don't understand
  return request_without_filtering_rack_direct(method, path, *arguments) unless site.scheme.match(/^rack-direct/)

  # puts "#{method.to_s.upcase} #{site.scheme}://#{site.host}:#{site.port}#{path}" if logger
  result = nil

  headers = arguments.last
  body = arguments.first if arguments.length > 1

  payload = {
    # Note: We can't pass through a site.scheme of 'rack-direct'
    # because the Rack instance on the receiving end will freak
    # out. So we use http in the URI here.
    "uri" => "http://#{site.host}#{path}",
    "method" => method.to_s.upcase,
    "body" => body.to_s,
    "CONTENT_TYPE" => headers["Content-Type"] || "text/plain;charset=utf-8",
  }

  result = JSON.parse(Service.send_request(site.host, payload))

  result = DirectResponse.new result["status"], result["headers"], result["body"]

  Service.log site.host, "#{result.code} #{result.message}"
  result.each_header { |k,v| Service.log site.host, "#{k}: #{v}" }
  Service.log site.host, "START BODY"
  Service.log site.host, result.body
  Service.log site.host, "END BODY"

  handle_response(result)
end