collin (owner)

Revisions

gist: 148344 Download_button fork
public
Public Clone URL: git://gist.github.com/148344.git
Embed All Files: show embed
rack_forward.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Rack::Request
  def forward_to target, &block
    curl = Curl::Easy.new(target)
    
    case
      when get?
        curl.http_get
      when post?
        curl.http_post body
      when put?
        curl.http_put body
      when delete?
        curl.http_delete
      else
        raise "Unimplemented HTTP methof for Rack::Request#forward"
    end
    
    headers = {}
    
    curl.header_str.split("\r\n")[1..-1].each do |item|
      k,v = item.split(": ")
      headers[k] = v
      headers
    end
      
    headers.delete "Vary"
    headers.delete "Transfer-Encoding"
    headers.delete "Date"
    
    [curl.response_code, headers, yield(curl.body_str)]
  end
end