89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/nanoc/extra/chick.rb', line 89
def self.call(env)
request = Rack::Request.new(env)
= env.reduce({}) do |m, (k, v)|
k =~ /^HTTP_(.*)$/ && v ? m.merge($1.gsub(/_/, '-') => v) : m
end
http = Net::HTTP.new(request.host, request.port)
net_http_request_class = METHOD_TO_CLASS_MAPPING[request.request_method]
raise ArgumentError, "Unsupported method: #{request.request_method}" if net_http_request_class.nil?
net_http_request = net_http_request_class.new(request.fullpath, )
net_http_request.body = env['rack.input'].read if %w( POST PUT ).include?(request.request_method)
http.request(net_http_request) do |response|
return [
response.code.to_i,
response.to_hash.reduce({}) { |m, (k, v)| m.merge(k => v[0]) },
[response.body]
]
end
end
|