Class: Nanoc3::Extra::CHiCk::RackClient Deprecated
- Inherits:
-
Object
- Object
- Nanoc3::Extra::CHiCk::RackClient
- Defined in:
- lib/nanoc3/extra/chick.rb
Overview
Deprecated.
Use a HTTP library such as [Net::HTTP](ruby-doc.org/stdlib/libdoc/net/http/rdoc/) or [Curb](curb.rubyforge.org/) instead.
Constant Summary collapse
- METHOD_TO_CLASS_MAPPING =
{ 'DELETE' => Net::HTTP::Delete, 'GET' => Net::HTTP::Get, 'HEAD' => Net::HTTP::Head, 'POST' => Net::HTTP::Post, 'PUT' => Net::HTTP::Put }
Class Method Summary collapse
Class Method Details
.call(env) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/nanoc3/extra/chick.rb', line 94 def self.call(env) # Build request request = Rack::Request.new(env) # Build headers and strip HTTP_ request_headers = env.inject({}) do |m,(k,v)| k =~ /^HTTP_(.*)$/ && v ? m.merge($1.gsub(/_/, '-') => v) : m end # Build Net::HTTP request 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, request_headers) net_http_request.body = env['rack.input'].read if [ 'POST', 'PUT' ].include?(request.request_method) # Perform request http.request(net_http_request) do |response| # Build Rack response triplet return [ response.code.to_i, response.to_hash.inject({}) { |m,(k,v)| m.merge(k => v[0]) }, [ response.body ] ] end end |