Class: Manticore::Client
- Inherits:
-
Object
- Object
- Manticore::Client
- Includes:
- ProxiesInterface
- Defined in:
- lib/manticore/client.rb,
lib/manticore/client/proxies.rb
Overview
Core Manticore client, with a backing PoolingHttpClientConnectionManager
Defined Under Namespace
Modules: ProxiesInterface Classes: AsyncProxy, BackgroundProxy, BaseProxy, StubProxy
Constant Summary collapse
- DEFAULT_MAX_POOL_SIZE =
The default maximum pool size for requests
50
- DEFAULT_REQUEST_TIMEOUT =
60
- DEFAULT_SOCKET_TIMEOUT =
10
- DEFAULT_CONNECT_TIMEOUT =
10
- DEFAULT_MAX_REDIRECTS =
5
- DEFAULT_EXPECT_CONTINUE =
false
- DEFAULT_STALE_CHECK =
false
Instance Method Summary collapse
-
#clear_pending ⇒ Object
Remove all pending asynchronous requests.
-
#clear_stubs! ⇒ Object
Wipe all currently-set stubs.
-
#delete(url, options = {}, &block) ⇒ Response
Perform a HTTP DELETE request.
-
#execute! ⇒ Array
Execute all queued async requests.
-
#executor ⇒ Object
Get at the underlying ExecutorService used to invoke asynchronous calls.
-
#get(url, options = {}, &block) ⇒ Response
Perform a HTTP GET request.
-
#head(url, options = {}, &block) ⇒ Response
Perform a HTTP HEAD request.
-
#initialize(options = {}) {|builder, request_config| ... } ⇒ Client
constructor
Create a new HTTP client with a backing request pool.
-
#options(url, options = {}, &block) ⇒ Response
Perform a HTTP OPTIONS request.
-
#patch(url, options = {}, &block) ⇒ Response
Perform a HTTP PATCH request.
-
#pool_stats ⇒ Object
Return a hash of statistics about this client’s HTTP connection pool.
-
#post(url, options = {}, &block) ⇒ Response
Perform a HTTP POST request.
-
#put(url, options = {}, &block) ⇒ Response
Perform a HTTP PUT request.
-
#stub(url, stubs) ⇒ Object
Cause this client to return a stubbed response for this URL.
-
#unstub(url) ⇒ Object
Cause this client to unstubbed previously-stubbed URL.
Methods included from ProxiesInterface
#async, #background, #respond_with
Constructor Details
#initialize(options = {}) {|builder, request_config| ... } ⇒ Client
Create a new HTTP client with a backing request pool. if you pass a block to the initializer, the underlying HttpClientBuilder and RequestConfig.Builder will be yielded so that you can operate on them directly.
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/manticore/client.rb', line 121 def initialize( = {}) builder = client_builder builder.set_user_agent .fetch(:user_agent, "Manticore #{VERSION}") @use_cookies = .fetch(:cookies, false) builder. unless @use_cookies builder.disable_content_compression if .fetch(:compression, true) == false builder.set_proxy get_proxy_host([:proxy]) if .key?(:proxy) # This should make it easier to reuse connections # TODO: Determine what this actually does! # builder.disable_connection_state keepalive = .fetch(:keepalive, true) if keepalive == false builder.set_connection_reuse_strategy {|response, context| false } else builder.set_connection_reuse_strategy DefaultConnectionReuseStrategy.new end socket_config_builder = SocketConfig.custom socket_config_builder.setSoTimeout( .fetch(:socket_timeout, DEFAULT_SOCKET_TIMEOUT) * 1000 ) builder.set_default_socket_config socket_config_builder.build builder.set_connection_manager pool() request_config = RequestConfig.custom request_config.set_connection_request_timeout .fetch(:request_timeout, DEFAULT_REQUEST_TIMEOUT) * 1000 request_config.set_connect_timeout .fetch(:connect_timeout, DEFAULT_CONNECT_TIMEOUT) * 1000 request_config.set_socket_timeout .fetch(:socket_timeout, DEFAULT_SOCKET_TIMEOUT) * 1000 request_config.set_max_redirects .fetch(:max_redirects, DEFAULT_MAX_REDIRECTS) request_config.set_expect_continue_enabled .fetch(:expect_continue, DEFAULT_EXPECT_CONTINUE) request_config.set_stale_connection_check_enabled .fetch(:stale_check, DEFAULT_STALE_CHECK) request_config.set_circular_redirects_allowed false yield builder, request_config if block_given? builder.set_default_request_config request_config.build @client = builder.build @options = @async_requests = [] @stubs = {} end |
Instance Method Details
#clear_pending ⇒ Object
Remove all pending asynchronous requests.
245 246 247 248 |
# File 'lib/manticore/client.rb', line 245 def clear_pending @async_requests.clear nil end |
#clear_stubs! ⇒ Object
Wipe all currently-set stubs.
238 239 240 |
# File 'lib/manticore/client.rb', line 238 def clear_stubs! @stubs.clear end |
#delete(url, options = {}, &block) ⇒ Response
Perform a HTTP DELETE request
203 204 205 |
# File 'lib/manticore/client.rb', line 203 def delete(url, = {}, &block) request HttpDelete, url, , &block end |
#execute! ⇒ Array
Execute all queued async requests
253 254 255 256 257 258 |
# File 'lib/manticore/client.rb', line 253 def execute! method = executor.java_method(:submit, [java.util.concurrent.Callable.java_class]) result = @async_requests.map {|r| method.call r } @async_requests.clear result.map(&:get) end |
#executor ⇒ Object
Get at the underlying ExecutorService used to invoke asynchronous calls.
261 262 263 264 |
# File 'lib/manticore/client.rb', line 261 def executor create_executor_if_needed @executor end |
#get(url, options = {}, &block) ⇒ Response
Perform a HTTP GET request
179 180 181 |
# File 'lib/manticore/client.rb', line 179 def get(url, = {}, &block) request HttpGet, url, , &block end |
#head(url, options = {}, &block) ⇒ Response
Perform a HTTP HEAD request
191 192 193 |
# File 'lib/manticore/client.rb', line 191 def head(url, = {}, &block) request HttpHead, url, , &block end |
#options(url, options = {}, &block) ⇒ Response
Perform a HTTP OPTIONS request
209 210 211 |
# File 'lib/manticore/client.rb', line 209 def (url, = {}, &block) request HttpOptions, url, , &block end |
#patch(url, options = {}, &block) ⇒ Response
Perform a HTTP PATCH request
215 216 217 |
# File 'lib/manticore/client.rb', line 215 def patch(url, = {}, &block) request HttpPatch, url, , &block end |
#pool_stats ⇒ Object
Return a hash of statistics about this client’s HTTP connection pool
165 166 167 168 169 170 171 172 173 |
# File 'lib/manticore/client.rb', line 165 def pool_stats stats = @pool.get_total_stats { max: stats.get_max, leased: stats.get_leased, pending: stats.get_pending, available: stats.get_available } end |
#post(url, options = {}, &block) ⇒ Response
Perform a HTTP POST request
197 198 199 |
# File 'lib/manticore/client.rb', line 197 def post(url, = {}, &block) request HttpPost, url, , &block end |
#put(url, options = {}, &block) ⇒ Response
Perform a HTTP PUT request
185 186 187 |
# File 'lib/manticore/client.rb', line 185 def put(url, = {}, &block) request HttpPut, url, , &block end |
#stub(url, stubs) ⇒ Object
Cause this client to return a stubbed response for this URL
228 229 230 |
# File 'lib/manticore/client.rb', line 228 def stub(url, stubs) @stubs[url] = stubs end |
#unstub(url) ⇒ Object
Cause this client to unstubbed previously-stubbed URL
233 234 235 |
# File 'lib/manticore/client.rb', line 233 def unstub(url) @stubs.delete(url) end |