Class: Rack::Proxy
- Inherits:
-
Object
- Object
- Rack::Proxy
- Defined in:
- lib/rack/proxy.rb
Overview
Subclass and bring your own #rewrite_request and #rewrite_response
Constant Summary collapse
- VERSION =
"0.5.10"
Class Method Summary collapse
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(opts = {}) ⇒ Proxy
constructor
A new instance of Proxy.
-
#rewrite_env(env) ⇒ Object
Return modified env.
-
#rewrite_response(triplet) ⇒ Object
Return a rack triplet [status, headers, body].
Constructor Details
#initialize(opts = {}) ⇒ Proxy
Returns a new instance of Proxy.
35 36 37 38 39 |
# File 'lib/rack/proxy.rb', line 35 def initialize(opts={}) @streaming = opts.fetch(:streaming, true) @ssl_verify_none = opts.fetch(:ssl_verify_none, false) @backend = URI(opts[:backend]) if opts[:backend] end |
Class Method Details
.extract_http_request_headers(env) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rack/proxy.rb', line 11 def extract_http_request_headers(env) headers = env.reject do |k, v| !(/^HTTP_[A-Z_]+$/ === k) || v.nil? end.map do |k, v| [reconstruct_header_name(k), v] end.inject(Utils::HeaderHash.new) do |hash, k_v| k, v = k_v hash[k] = v hash end x_forwarded_for = (headers["X-Forwarded-For"].to_s.split(/, +/) << env["REMOTE_ADDR"]).join(", ") headers.merge!("X-Forwarded-For" => x_forwarded_for) end |
Instance Method Details
#call(env) ⇒ Object
41 42 43 |
# File 'lib/rack/proxy.rb', line 41 def call(env) rewrite_response(perform_request(rewrite_env(env))) end |
#rewrite_env(env) ⇒ Object
Return modified env
46 47 48 |
# File 'lib/rack/proxy.rb', line 46 def rewrite_env(env) env end |
#rewrite_response(triplet) ⇒ Object
Return a rack triplet [status, headers, body]
51 52 53 |
# File 'lib/rack/proxy.rb', line 51 def rewrite_response(triplet) triplet end |