manticore 0.6.1-java → 0.6.2-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/CHANGELOG.md +1 -1
- data/README.md +1 -1
- data/Rakefile +14 -12
- data/ext/manticore/org/manticore/Manticore.java +4 -0
- data/lib/faraday/adapter/manticore.rb +11 -10
- data/lib/manticore.rb +10 -10
- data/lib/manticore/client.rb +51 -50
- data/lib/manticore/client/proxies.rb +3 -1
- data/lib/manticore/cookie.rb +12 -12
- data/lib/manticore/facade.rb +2 -2
- data/lib/manticore/java_extensions.rb +1 -1
- data/lib/manticore/response.rb +32 -27
- data/lib/manticore/stubbed_response.rb +6 -5
- data/lib/manticore/version.rb +1 -1
- data/lib/manticore_jars.rb +6 -6
- data/lib/org/manticore/manticore-ext.jar +0 -0
- data/spec/manticore/client_proxy_spec.rb +5 -4
- data/spec/manticore/client_spec.rb +93 -68
- data/spec/manticore/cookie_spec.rb +9 -10
- data/spec/manticore/facade_spec.rb +6 -6
- data/spec/manticore/response_spec.rb +11 -12
- data/spec/manticore/stubbed_response_spec.rb +5 -5
- data/spec/spec_helper.rb +36 -29
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52e7c6c63c54c59317eb836e5caa6cc1dbb08fc1
|
4
|
+
data.tar.gz: 362d618ee0a1e92762bd5acbb9639c0ea18af0e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab0c5c529908001ac420bc3c82234ff9016139024211dc2e1e9111dc71e43b37b6ce92c674a5b67c270329de752e3d33fc9e8cb726246a792bdc060e02bb3881
|
7
|
+
data.tar.gz: 1aa799e26509c9e0ce51be46b5cf3f156bd0bfc33f9ecc8a41c136a039f2547ef8e8d0ad479afcfd69a34b6d0fbdb7525e670d65c8c594e51d50a4c53a04a62f
|
data/.travis.yml
CHANGED
@@ -9,14 +9,15 @@ rvm:
|
|
9
9
|
- jruby-9.0.5.0
|
10
10
|
jdk:
|
11
11
|
- oraclejdk8
|
12
|
-
- oraclejdk7
|
13
12
|
- openjdk7
|
14
13
|
before_install:
|
15
14
|
- gem install ruby-maven bundler
|
16
15
|
- bundle install
|
17
16
|
matrix:
|
18
17
|
include:
|
18
|
+
- rvm: jruby-9.2.0.0
|
19
|
+
jdk: oraclejdk8
|
19
20
|
- rvm: jruby-head
|
20
21
|
jdk: oraclejdk8
|
21
22
|
allow_failures:
|
22
|
-
- rvm: jruby-head
|
23
|
+
- rvm: jruby-head
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Manticore
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/cheald/manticore.
|
3
|
+
[![Build Status](https://travis-ci.org/cheald/manticore.svg?branch=master)](https://travis-ci.org/cheald/manticore)
|
4
4
|
|
5
5
|
Manticore is a fast, robust HTTP client built on the Apache HTTPClient libraries. It is only compatible with JRuby.
|
6
6
|
|
data/Rakefile
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
|
3
|
-
require
|
3
|
+
require "rspec/core/rake_task"
|
4
4
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
5
|
-
spec.pattern =
|
6
|
-
spec.rspec_opts = [
|
5
|
+
spec.pattern = "spec/**/*_spec.rb"
|
6
|
+
spec.rspec_opts = ["--tty --color --format documentation"]
|
7
7
|
end
|
8
8
|
task :default => [:generate_certs, :spec]
|
9
9
|
|
10
10
|
# Download and vendor the jars needed
|
11
|
-
require
|
11
|
+
require "jars/installer"
|
12
12
|
task :install_jars do
|
13
13
|
Jars::Installer.vendor_jars!
|
14
14
|
end
|
15
15
|
|
16
16
|
## Build the Manticore extensions into a jar. You may need to install_jars first
|
17
17
|
# Dependency jars for the Manticore ext build
|
18
|
-
require
|
19
|
-
jars = ["#{ENV[
|
20
|
-
jars.reject! {|j| j.match("manticore-ext") }
|
18
|
+
require "rake/javaextensiontask"
|
19
|
+
jars = ["#{ENV["MY_RUBY_HOME"]}/lib/jruby.jar"] + Dir.glob("lib/**/*.jar")
|
20
|
+
jars.reject! { |j| j.match("manticore-ext") }
|
21
21
|
Rake::JavaExtensionTask.new do |ext|
|
22
22
|
ext.name = "manticore-ext"
|
23
23
|
ext.lib_dir = "lib/org/manticore"
|
24
|
-
ext.classpath = jars.map {|x| File.expand_path x}.join
|
24
|
+
ext.classpath = jars.map { |x| File.expand_path x }.join ":"
|
25
25
|
end
|
26
26
|
|
27
27
|
# Generate all the stuff we need for a full test run
|
@@ -30,10 +30,10 @@ task :generate_certs do
|
|
30
30
|
openssl = `which openssl`.strip
|
31
31
|
keytool = `which keytool`.strip
|
32
32
|
|
33
|
-
Dir.glob("#{root}/*").each {|f| File.unlink f }
|
33
|
+
Dir.glob("#{root}/*").each { |f| File.unlink f }
|
34
34
|
|
35
|
-
# Create the CA
|
36
35
|
cmds = [
|
36
|
+
# Create the CA
|
37
37
|
"#{openssl} genrsa 4096 | #{openssl} pkcs8 -topk8 -nocrypt -out #{root}/root-ca.key",
|
38
38
|
"#{openssl} req -sha256 -x509 -newkey rsa:4096 -nodes -key #{root}/root-ca.key -sha256 -days 365 -out #{root}/root-ca.crt -subj \"/C=US/ST=The Internet/L=The Internet/O=Manticore CA/OU=Manticore/CN=localhost\"",
|
39
39
|
|
@@ -41,15 +41,17 @@ task :generate_certs do
|
|
41
41
|
"#{openssl} genrsa 4096 | #{openssl} pkcs8 -topk8 -nocrypt -out #{root}/client.key",
|
42
42
|
"#{openssl} req -sha256 -key #{root}/client.key -newkey rsa:4096 -out #{root}/client.csr -subj \"/C=US/ST=The Internet/L=The Internet/O=Manticore Client/OU=Manticore/CN=localhost\"",
|
43
43
|
"#{openssl} x509 -req -in #{root}/client.csr -CA #{root}/root-ca.crt -CAkey #{root}/root-ca.key -CAcreateserial -out #{root}/client.crt -sha256 -days 1",
|
44
|
+
"#{openssl} x509 -req -in #{root}/client.csr -CA #{root}/root-ca.crt -CAkey #{root}/root-ca.key -CAcreateserial -out #{root}/client-expired.crt -sha256 -days -7",
|
44
45
|
|
45
46
|
# Create the server cert
|
46
47
|
"#{openssl} genrsa 4096 | #{openssl} pkcs8 -topk8 -nocrypt -out #{root}/host.key",
|
47
48
|
"#{openssl} req -sha256 -key #{root}/host.key -newkey rsa:4096 -out #{root}/host.csr -subj \"/C=US/ST=The Internet/L=The Internet/O=Manticore Host/OU=Manticore/CN=localhost\"",
|
48
49
|
"#{openssl} x509 -req -in #{root}/host.csr -CA #{root}/root-ca.crt -CAkey #{root}/root-ca.key -CAcreateserial -out #{root}/host.crt -sha256 -days 1",
|
50
|
+
"#{openssl} x509 -req -in #{root}/host.csr -CA #{root}/root-ca.crt -CAkey #{root}/root-ca.key -CAcreateserial -out #{root}/host-expired.crt -sha256 -days -7",
|
49
51
|
|
50
52
|
"#{keytool} -import -file #{root}/root-ca.crt -alias rootCA -keystore #{root}/truststore.jks -noprompt -storepass test123",
|
51
53
|
"#{openssl} pkcs12 -export -clcerts -out #{root}/client.p12 -inkey #{root}/client.key -in #{root}/client.crt -certfile #{root}/root-ca.crt -password pass:test123",
|
52
54
|
]
|
53
55
|
|
54
|
-
cmds.each.with_index {|cmd, index| puts "#{index}. #{cmd}"; system cmd }
|
55
|
-
end
|
56
|
+
cmds.each.with_index { |cmd, index| puts "#{index}. #{cmd}"; system cmd }
|
57
|
+
end
|
@@ -43,6 +43,10 @@ public class Manticore implements Library {
|
|
43
43
|
if(charset == null) { charset = HTTP.DEFAULT_CONTENT_CHARSET; }
|
44
44
|
Encoding encoding;
|
45
45
|
try {
|
46
|
+
String mimeType = EntityUtils.getContentMimeType(entity);
|
47
|
+
if (mimeType.startsWith("application/json")) {
|
48
|
+
charset = "UTF-8";
|
49
|
+
}
|
46
50
|
encoding = context.getRuntime().getEncodingService().getEncodingFromString(charset);
|
47
51
|
} catch(Throwable e) {
|
48
52
|
encoding = context.getRuntime().getEncodingService().getEncodingFromString(HTTP.DEFAULT_CONTENT_CHARSET);
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "faraday"
|
2
2
|
|
3
3
|
module Faraday
|
4
4
|
class Adapter
|
5
5
|
class Manticore < Faraday::Adapter
|
6
|
-
dependency { require
|
6
|
+
dependency { require "manticore" }
|
7
7
|
|
8
8
|
class ParallelManager
|
9
9
|
def client=(client)
|
@@ -30,10 +30,10 @@ module Faraday
|
|
30
30
|
opts = {}
|
31
31
|
if ssl = env[:ssl].to_hash
|
32
32
|
opts[:ssl] = {}
|
33
|
-
opts[:ssl][:verify]
|
34
|
-
opts[:ssl][:ca_file]
|
33
|
+
opts[:ssl][:verify] = :disable if ssl[:verify] == false
|
34
|
+
opts[:ssl][:ca_file] = ssl[:ca_file]
|
35
35
|
opts[:ssl][:client_cert] = ssl[:client_cert]
|
36
|
-
opts[:ssl][:client_key]
|
36
|
+
opts[:ssl][:client_key] = ssl[:client_key]
|
37
37
|
end
|
38
38
|
conn_opts = @connection_options.dup
|
39
39
|
if conn_opts.key?(:ssl)
|
@@ -50,7 +50,7 @@ module Faraday
|
|
50
50
|
opts = {}
|
51
51
|
if env.key? :request_headers
|
52
52
|
opts[:headers] = env[:request_headers]
|
53
|
-
opts[:headers].reject! {|k, _| k.downcase == "content-length" } # Manticore computes Content-Length
|
53
|
+
opts[:headers].reject! { |k, _| k.downcase == "content-length" } # Manticore computes Content-Length
|
54
54
|
end
|
55
55
|
body = read_body(env)
|
56
56
|
opts[:body] = body if body
|
@@ -60,9 +60,9 @@ module Faraday
|
|
60
60
|
opts[:connect_timeout] = req[:open_timeout] if req.key?(:open_timeout)
|
61
61
|
if prx = req[:proxy]
|
62
62
|
opts[:proxy] = {
|
63
|
-
:url
|
64
|
-
:user
|
65
|
-
:password => prx[:password]
|
63
|
+
:url => prx[:uri].to_s,
|
64
|
+
:user => prx[:user],
|
65
|
+
:password => prx[:password],
|
66
66
|
}
|
67
67
|
end
|
68
68
|
end
|
@@ -106,6 +106,7 @@ module Faraday
|
|
106
106
|
env[:body].respond_to?(:read) ? env[:body].read : env[:body]
|
107
107
|
end
|
108
108
|
end
|
109
|
+
|
109
110
|
register_middleware nil, :manticore => :Manticore
|
110
111
|
end
|
111
|
-
end
|
112
|
+
end
|
data/lib/manticore.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "java"
|
2
|
+
require "uri"
|
3
|
+
require "cgi"
|
4
4
|
|
5
5
|
require_relative "./manticore_jars.rb"
|
6
6
|
require_relative "./org/manticore/manticore-ext"
|
@@ -42,12 +42,12 @@ module Manticore
|
|
42
42
|
class UnknownException < ManticoreException; end
|
43
43
|
|
44
44
|
require_relative "./manticore/java_extensions"
|
45
|
-
require_relative
|
46
|
-
require_relative
|
47
|
-
require_relative
|
48
|
-
require_relative
|
49
|
-
require_relative
|
50
|
-
require_relative
|
45
|
+
require_relative "./manticore/client/proxies"
|
46
|
+
require_relative "./manticore/client"
|
47
|
+
require_relative "./manticore/response"
|
48
|
+
require_relative "./manticore/stubbed_response"
|
49
|
+
require_relative "./manticore/cookie"
|
50
|
+
require_relative "./manticore/facade"
|
51
51
|
|
52
52
|
include Facade
|
53
53
|
include_http_client
|
@@ -57,4 +57,4 @@ module Manticore
|
|
57
57
|
props.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog")
|
58
58
|
props.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "error")
|
59
59
|
end
|
60
|
-
end
|
60
|
+
end
|
data/lib/manticore/client.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "thread"
|
2
|
+
require "base64"
|
3
|
+
require "weakref"
|
4
4
|
|
5
5
|
module Manticore
|
6
6
|
# @!macro [new] http_method_shared
|
@@ -13,9 +13,9 @@ module Manticore
|
|
13
13
|
# @option options [String] proxy Proxy host in form: http://proxy.org:1234
|
14
14
|
# @option options [Hash] proxy Proxy host in form: {host: 'proxy.org'[, port: 80[, scheme: 'http']]}
|
15
15
|
# @option options [URI] proxy Proxy host as a URI object
|
16
|
-
# @option options [
|
17
|
-
# @option options [
|
18
|
-
# @option options [
|
16
|
+
# @option options [Float] connect_timeout Request-specific connect timeout (in seconds)
|
17
|
+
# @option options [Float] socket_timeout Request-specific socket timeout (in seconds)
|
18
|
+
# @option options [Float] request_timeout Request-specific request timeout (in seconds)
|
19
19
|
# @option options [Integer] max_redirects Request-specific maximum redirect limit
|
20
20
|
# @option options [Boolean] follow_redirects Specify whether this request should follow redirects
|
21
21
|
# @option options [Hash] auth Specify authentication for the request
|
@@ -79,7 +79,7 @@ module Manticore
|
|
79
79
|
include_package "org.apache.http.auth"
|
80
80
|
include_package "java.util.concurrent"
|
81
81
|
include_package "org.apache.http.client.protocol"
|
82
|
-
include_package
|
82
|
+
include_package "org.apache.http.conn.ssl"
|
83
83
|
include_package "java.security.cert"
|
84
84
|
include_package "java.security.spec"
|
85
85
|
include_package "java.security"
|
@@ -105,14 +105,14 @@ module Manticore
|
|
105
105
|
include ProxiesInterface
|
106
106
|
|
107
107
|
# The default maximum pool size for requests
|
108
|
-
DEFAULT_MAX_POOL_SIZE
|
108
|
+
DEFAULT_MAX_POOL_SIZE = 50
|
109
109
|
|
110
110
|
DEFAULT_REQUEST_TIMEOUT = 60
|
111
|
-
DEFAULT_SOCKET_TIMEOUT
|
111
|
+
DEFAULT_SOCKET_TIMEOUT = 10
|
112
112
|
DEFAULT_CONNECT_TIMEOUT = 10
|
113
|
-
DEFAULT_MAX_REDIRECTS
|
113
|
+
DEFAULT_MAX_REDIRECTS = 5
|
114
114
|
DEFAULT_EXPECT_CONTINUE = false
|
115
|
-
DEFAULT_STALE_CHECK
|
115
|
+
DEFAULT_STALE_CHECK = false
|
116
116
|
|
117
117
|
attr_reader :client
|
118
118
|
|
@@ -177,7 +177,7 @@ module Manticore
|
|
177
177
|
@finalizers = []
|
178
178
|
self.class.shutdown_on_finalize self, @finalizers
|
179
179
|
|
180
|
-
builder
|
180
|
+
builder = client_builder
|
181
181
|
builder.set_user_agent options.fetch(:user_agent, "Manticore #{VERSION}")
|
182
182
|
@options = options
|
183
183
|
@use_cookies = options.fetch(:cookies, false)
|
@@ -195,24 +195,24 @@ module Manticore
|
|
195
195
|
|
196
196
|
@keepalive = options.fetch(:keepalive, true)
|
197
197
|
if @keepalive == false
|
198
|
-
builder.set_connection_reuse_strategy {|response, context| false }
|
198
|
+
builder.set_connection_reuse_strategy { |response, context| false }
|
199
199
|
else
|
200
200
|
builder.set_connection_reuse_strategy DefaultConnectionReuseStrategy.new
|
201
201
|
end
|
202
202
|
|
203
203
|
socket_config_builder = SocketConfig.custom
|
204
|
-
socket_config_builder.set_so_timeout(
|
205
|
-
socket_config_builder.set_tcp_no_delay(
|
204
|
+
socket_config_builder.set_so_timeout(options.fetch(:socket_timeout, DEFAULT_SOCKET_TIMEOUT) * 1000)
|
205
|
+
socket_config_builder.set_tcp_no_delay(options.fetch(:tcp_no_delay, true))
|
206
206
|
builder.set_default_socket_config socket_config_builder.build
|
207
207
|
|
208
208
|
builder.set_connection_manager pool(options)
|
209
209
|
|
210
210
|
request_config = RequestConfig.custom
|
211
|
-
request_config.set_connection_request_timeout
|
212
|
-
request_config.set_connect_timeout
|
213
|
-
request_config.set_socket_timeout
|
214
|
-
request_config.set_max_redirects
|
215
|
-
request_config.set_expect_continue_enabled
|
211
|
+
request_config.set_connection_request_timeout options.fetch(:request_timeout, DEFAULT_REQUEST_TIMEOUT) * 1000
|
212
|
+
request_config.set_connect_timeout options.fetch(:connect_timeout, DEFAULT_CONNECT_TIMEOUT) * 1000
|
213
|
+
request_config.set_socket_timeout options.fetch(:socket_timeout, DEFAULT_SOCKET_TIMEOUT) * 1000
|
214
|
+
request_config.set_max_redirects options.fetch(:max_redirects, DEFAULT_MAX_REDIRECTS)
|
215
|
+
request_config.set_expect_continue_enabled options.fetch(:expect_continue, DEFAULT_EXPECT_CONTINUE)
|
216
216
|
request_config.set_stale_connection_check_enabled options.fetch(:stale_check, DEFAULT_STALE_CHECK)
|
217
217
|
request_config.set_circular_redirects_allowed false
|
218
218
|
|
@@ -233,7 +233,7 @@ module Manticore
|
|
233
233
|
max: stats.get_max,
|
234
234
|
leased: stats.get_leased,
|
235
235
|
pending: stats.get_pending,
|
236
|
-
available: stats.get_available
|
236
|
+
available: stats.get_available,
|
237
237
|
}
|
238
238
|
end
|
239
239
|
|
@@ -333,7 +333,7 @@ module Manticore
|
|
333
333
|
# @return [Array] An array of the responses from the requests executed.
|
334
334
|
def execute!
|
335
335
|
method = executor.java_method(:submit, [java.util.concurrent.Callable.java_class])
|
336
|
-
result = @async_requests.map {|r| method.call r }
|
336
|
+
result = @async_requests.map { |r| method.call r }
|
337
337
|
@async_requests.clear
|
338
338
|
result.map do |future|
|
339
339
|
begin
|
@@ -357,8 +357,8 @@ module Manticore
|
|
357
357
|
|
358
358
|
def self.shutdown_on_finalize(client, objs)
|
359
359
|
ObjectSpace.define_finalizer client, -> {
|
360
|
-
|
361
|
-
|
360
|
+
objs.each { |obj, args| obj.send(*args) rescue nil }
|
361
|
+
}
|
362
362
|
end
|
363
363
|
|
364
364
|
protected
|
@@ -383,12 +383,12 @@ module Manticore
|
|
383
383
|
end
|
384
384
|
|
385
385
|
def pool_builder(options)
|
386
|
-
http_sf
|
386
|
+
http_sf = PlainConnectionSocketFactory.new
|
387
387
|
|
388
388
|
if options[:ignore_ssl_validation]
|
389
|
-
$stderr.puts
|
389
|
+
$stderr.puts "The options[:ignore_ssl_validation] setting is deprecated in favor of options[:ssl][:verify]"
|
390
390
|
options[:ssl] ||= {}
|
391
|
-
options[:ssl]
|
391
|
+
options[:ssl] = {:verify => !options.delete(:ignore_ssl_validation)}.merge(options[:ssl])
|
392
392
|
end
|
393
393
|
|
394
394
|
https_sf = ssl_socket_factory_from_options options.fetch(:ssl, {})
|
@@ -416,10 +416,10 @@ module Manticore
|
|
416
416
|
|
417
417
|
def request(klass, url, options, &block)
|
418
418
|
req, context = request_from_options(klass, url, options)
|
419
|
-
async
|
420
|
-
background
|
419
|
+
async = options.delete(:async)
|
420
|
+
background = options.delete(:async_background)
|
421
421
|
create_executor_if_needed if (background || async)
|
422
|
-
response
|
422
|
+
response = response_object_for(req, context, &block)
|
423
423
|
|
424
424
|
if async
|
425
425
|
@async_requests << response
|
@@ -439,7 +439,7 @@ module Manticore
|
|
439
439
|
|
440
440
|
match_key = @stubs.keys.find { |k| request_uri.match(k) }
|
441
441
|
if match_key
|
442
|
-
StubbedResponse.new(self, request, context, &block).stub(
|
442
|
+
StubbedResponse.new(self, request, context, &block).stub(@stubs[match_key])
|
443
443
|
else
|
444
444
|
Response.new(self, request, context, &block)
|
445
445
|
end
|
@@ -456,7 +456,7 @@ module Manticore
|
|
456
456
|
def request_from_options(klass, url, options)
|
457
457
|
req = klass.new uri_from_url_and_options(url, options).to_s
|
458
458
|
|
459
|
-
if (
|
459
|
+
if (options[:params] || options[:body] || options[:entity]) && req.kind_of?(HttpEntityEnclosingRequestBase)
|
460
460
|
if options[:params]
|
461
461
|
pairs = struct_to_name_value_pairs(options[:params])
|
462
462
|
encoding = minimum_encoding_for options[:params].to_s
|
@@ -479,10 +479,10 @@ module Manticore
|
|
479
479
|
if req_options[:proxy]
|
480
480
|
config.set_proxy get_proxy_host(req_options[:proxy])
|
481
481
|
end
|
482
|
-
config.set_max_redirects req_options[:max_redirects]
|
483
|
-
config.set_redirects_enabled !!req_options[:follow_redirects]
|
484
|
-
config.set_connect_timeout req_options[:connect_timeout] * 1000
|
485
|
-
config.set_socket_timeout req_options[:socket_timeout] * 1000
|
482
|
+
config.set_max_redirects req_options[:max_redirects] if req_options[:max_redirects]
|
483
|
+
config.set_redirects_enabled !!req_options[:follow_redirects] if req_options.fetch(:follow_redirects, nil) != nil
|
484
|
+
config.set_connect_timeout req_options[:connect_timeout] * 1000 if req_options[:connect_timeout]
|
485
|
+
config.set_socket_timeout req_options[:socket_timeout] * 1000 if req_options[:socket_timeout]
|
486
486
|
config.set_connection_request_timeout req_options[:request_timeout] * 1000 if req_options[:request_timeout]
|
487
487
|
req.set_config config.build
|
488
488
|
end
|
@@ -502,7 +502,7 @@ module Manticore
|
|
502
502
|
|
503
503
|
context = HttpClientContext.new
|
504
504
|
proxy_user = req_options[:proxy].is_a?(Hash) && (req_options[:proxy][:user] || req_options[:proxy][:username])
|
505
|
-
auth_from_options(req, req_options, context)
|
505
|
+
auth_from_options(req, req_options, context)
|
506
506
|
|
507
507
|
if @use_cookies == :per_request
|
508
508
|
store = BasicCookieStore.new
|
@@ -537,16 +537,15 @@ module Manticore
|
|
537
537
|
|
538
538
|
def auth_from_options(req, options, context)
|
539
539
|
proxy = options.fetch(:proxy, {})
|
540
|
-
|
540
|
+
|
541
541
|
proxy_user, proxy_pass = if proxy.is_a?(String)
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
542
|
+
proxy_uri = URI.parse(proxy)
|
543
|
+
[proxy_uri.user, proxy_uri.password]
|
544
|
+
else
|
545
|
+
[(proxy[:user] || proxy[:username]),
|
546
|
+
(proxy[:pass] || proxy[:password])]
|
547
|
+
end
|
548
|
+
|
550
549
|
if options[:auth] || proxy_user
|
551
550
|
provider = BasicCredentialsProvider.new
|
552
551
|
if options[:auth]
|
@@ -577,9 +576,9 @@ module Manticore
|
|
577
576
|
when nil
|
578
577
|
[]
|
579
578
|
when Hash
|
580
|
-
value.flat_map {|key, val| struct_to_name_value_pairs val, namespace ? "#{namespace}[#{key}]" : key }
|
579
|
+
value.flat_map { |key, val| struct_to_name_value_pairs val, namespace ? "#{namespace}[#{key}]" : key }
|
581
580
|
when Array
|
582
|
-
value.flat_map {|val| struct_to_name_value_pairs val, namespace }
|
581
|
+
value.flat_map { |val| struct_to_name_value_pairs val, namespace }
|
583
582
|
else
|
584
583
|
BasicNameValuePair.new(namespace, value.to_s)
|
585
584
|
end
|
@@ -588,6 +587,7 @@ module Manticore
|
|
588
587
|
# Apache HTTP assumes ISO_8859_1 for StringEntities; we'll try to be nice and pass that when possible
|
589
588
|
# so that it doesn't have to any multibyte work.
|
590
589
|
ISO_8859_1 = "ISO-8859-1".freeze
|
590
|
+
|
591
591
|
def minimum_encoding_for(string)
|
592
592
|
if string.ascii_only?
|
593
593
|
ISO_8859_1
|
@@ -639,6 +639,7 @@ module Manticore
|
|
639
639
|
end
|
640
640
|
|
641
641
|
KEY_EXTRACTION_REGEXP = /(?:^-----BEGIN(.* )PRIVATE KEY-----\n)(.*?)(?:-----END\1PRIVATE KEY.*$)/m
|
642
|
+
|
642
643
|
def setup_key_store(ssl_options, context)
|
643
644
|
key_store = get_store(:keystore, ssl_options) if ssl_options.key?(:keystore)
|
644
645
|
keystore_password = (ssl_options[:keystore_password] || "").to_java.toCharArray
|
@@ -685,7 +686,7 @@ module Manticore
|
|
685
686
|
end
|
686
687
|
|
687
688
|
def blank_keystore
|
688
|
-
KeyStore.get_instance(KeyStore.get_default_type).tap {|k| k.load(nil, nil) }
|
689
|
+
KeyStore.get_instance(KeyStore.get_default_type).tap { |k| k.load(nil, nil) }
|
689
690
|
end
|
690
691
|
|
691
692
|
def guess_store_type(filename)
|
@@ -698,7 +699,7 @@ module Manticore
|
|
698
699
|
|
699
700
|
def treat_params_as_query(options)
|
700
701
|
if options.key?(:params) && !options.key?(:query)
|
701
|
-
options.dup.tap {|o| o[:query] = o.delete(:params) }
|
702
|
+
options.dup.tap { |o| o[:query] = o.delete(:params) }
|
702
703
|
else
|
703
704
|
options
|
704
705
|
end
|