Class: RestBuilder::Engine
- Inherits:
-
Object
- Object
- RestBuilder::Engine
- Includes:
- Middleware
- Defined in:
- lib/rest-builder/engine.rb
Direct Known Subclasses
Constant Summary
Constants included from Middleware
Middleware::METHODS_WITH_PAYLOAD, Middleware::UNRESERVED
Class Method Summary collapse
Instance Method Summary collapse
Methods included from Middleware
contain_binary?, #contain_binary?, #error_callback, escape, #escape, #fail, #give_promise, has_payload?, #has_payload?, included, #log, #merge_hash, merge_hash, percent_encode, #percent_encode, #request_uri, request_uri, #run, #string_keys, string_keys
Class Method Details
.members ⇒ Object
8 |
# File 'lib/rest-builder/engine.rb', line 8 def self.members; [:config_engine]; end |
Instance Method Details
#call(env, &k) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rest-builder/engine.rb', line 11 def call env, &k promise = Promise.new(env[TIMER]) req = env.merge(REQUEST_URI => request_uri(env), PROMISE => promise) promise.then do |result| case result when Exception req.merge(FAIL => env[FAIL] + [result]) else req.merge(result) end end.then(&k) pool_size = env[CLIENT].class.pool_size if pool_size < 0 promise.call{ request(req) } elsif pool_size == 0 promise.defer{ request(req) } else promise.defer(env[CLIENT].class.thread_pool){ request(req) } end req.merge(promise.future_response) end |