Class: ProxES::Forwarder
Overview
A lot of code in this comes from Rack::Proxy
Instance Method Summary
collapse
#client, #conn, #ssl_store
Instance Method Details
#body_from(request) ⇒ Object
59
60
61
62
63
|
# File 'lib/proxes/forwarder.rb', line 59
def body_from(request)
return if request.body.nil? || request.body.respond_to?(:read) == false
request.body.read.tap { |_r| request.body.rewind }
end
|
#call(env) ⇒ Object
15
16
17
18
19
20
21
22
23
|
# File 'lib/proxes/forwarder.rb', line 15
def call(env)
rewrite_response(
perform_request(
Rack::Request.new(
rewrite_env(env)
)
)
)
end
|
51
52
53
54
55
56
57
|
# File 'lib/proxes/forwarder.rb', line 51
def
[
'date',
'content-type',
'cache-control',
]
end
|
65
66
67
68
69
70
71
|
# File 'lib/proxes/forwarder.rb', line 65
def ()
Rack::Utils::HeaderHash.new(
.map do |k, v|
[k, v.is_a?(Array) ? v.join("\n") : v]
end.to_h
)
end
|
TODO: Consider moving these methods to the ProxES ES Service to enable reuse
30
31
32
33
34
35
36
|
# File 'lib/proxes/forwarder.rb', line 30
def perform_request(request)
conn.send(request.request_method.downcase) do |req|
body = body_from(request)
req.body = body if body
req.url request.fullpath == '' ? URI.parse(env['REQUEST_URI']).request_uri : request.fullpath
end
end
|
#rewrite_env(env) ⇒ Object
25
26
27
|
# File 'lib/proxes/forwarder.rb', line 25
def rewrite_env(env)
env
end
|
#rewrite_response(response) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/proxes/forwarder.rb', line 38
def rewrite_response(response)
= (response.respond_to?(:headers) && response.) || (response.to_hash)
body = response.body || ['']
body = [body] unless body.respond_to?(:each)
.delete_if { |k, _v| !.include? k.downcase }
[response.status, , body]
end
|