Class: Utopia::Middleware::Requester
- Defined in:
- lib/utopia/middleware/requester.rb
Defined Under Namespace
Classes: NoRequesterError, RecursiveRequestError, Response
Constant Summary collapse
- TTL_KEY =
"utopia.requestor.ttl"
- REQUESTOR_KEY =
"utopia.requestor"
- PATH_VARIABLES =
Set.new
- MAXIMUM_DEPTH =
5
Instance Attribute Summary collapse
-
#env ⇒ Object
Returns the value of attribute env.
Class Method Summary collapse
Instance Method Summary collapse
- #[](path, method = "GET", env = {}) ⇒ Object
- #call(env) ⇒ Object
-
#initialize(app, env = {}) ⇒ Requester
constructor
A new instance of Requester.
-
#inspect ⇒ Object
Avoid a huge amount of junk being printed when inspecting
env
. - #request(env) ⇒ Object
Constructor Details
Instance Attribute Details
#env ⇒ Object
Returns the value of attribute env.
69 70 71 |
# File 'lib/utopia/middleware/requester.rb', line 69 def env @env end |
Class Method Details
.[](env) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/utopia/middleware/requester.rb', line 54 def self.[](env) requestor = env[REQUESTOR_KEY] if requestor return requestor else raise NoRequesterError end end |
Instance Method Details
#[](path, method = "GET", env = {}) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/utopia/middleware/requester.rb', line 94 def [](path, method = "GET", env = {}) path_env = { "REQUEST_METHOD" => method, "PATH_INFO" => path.to_s } request(env.merge(path_env)) end |
#call(env) ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/utopia/middleware/requester.rb', line 71 def call(env) requestor = dup env[REQUESTOR_KEY] = requestor requestor.env = env.merge(@env) requestor.env.delete("rack.request") @app.call(env) end |
#inspect ⇒ Object
Avoid a huge amount of junk being printed when inspecting env
.
103 104 105 |
# File 'lib/utopia/middleware/requester.rb', line 103 def inspect to_s end |
#request(env) ⇒ Object
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/utopia/middleware/requester.rb', line 83 def request(env) env = @env.merge(env) env[TTL_KEY] += 1 if env[TTL_KEY].to_i > MAXIMUM_DEPTH raise RecursiveRequestError, env["PATH_INFO"] end return Response.new(*@app.call(env)) end |