manticore 0.7.0-java → 0.9.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  module Manticore
2
- VERSION = "0.7.0"
2
+ VERSION = "0.9.0"
3
3
  end
data/lib/manticore.rb CHANGED
@@ -5,7 +5,11 @@ require "cgi"
5
5
  require_relative "./manticore_jars.rb"
6
6
  require_relative "./org/manticore/manticore-ext"
7
7
 
8
- org.manticore.Manticore.new.load(JRuby.runtime, false)
8
+ if defined? JRuby::Util.load_ext
9
+ JRuby::Util.load_ext 'org.manticore.Manticore'
10
+ else
11
+ org.manticore.Manticore.new.load(JRuby.runtime, false)
12
+ end
9
13
 
10
14
  require_relative "./manticore/version"
11
15
 
@@ -13,7 +17,27 @@ require_relative "./manticore/version"
13
17
  # with the beauty of Ruby.
14
18
  module Manticore
15
19
  # General base class for all Manticore exceptions
16
- class ManticoreException < StandardError; end
20
+ class ManticoreException < StandardError
21
+ def initialize(arg = nil)
22
+ case arg
23
+ when nil
24
+ @_cause = nil
25
+ super()
26
+ when java.lang.Throwable
27
+ @_cause = arg
28
+ super(arg.message)
29
+ else
30
+ @_cause = nil
31
+ super(arg)
32
+ end
33
+ end
34
+
35
+ # @return cause which is likely to be a Java exception
36
+ # @overload Exception#cause
37
+ def cause
38
+ @_cause || super
39
+ end
40
+ end
17
41
 
18
42
  # Exception thrown if you attempt to read from a closed Response stream
19
43
  class StreamClosedException < ManticoreException; end
@@ -43,6 +67,7 @@ module Manticore
43
67
 
44
68
  require_relative "./manticore/java_extensions"
45
69
  require_relative "./manticore/client/proxies"
70
+ require_relative "./manticore/client/trust_strategies"
46
71
  require_relative "./manticore/client"
47
72
  require_relative "./manticore/response"
48
73
  require_relative "./manticore/stubbed_response"
@@ -1,8 +1,18 @@
1
1
  # this is a generated file, to avoid over-writing it just delete this comment
2
- require "jar_dependencies"
2
+ begin
3
+ require 'jar_dependencies'
4
+ rescue LoadError
5
+ require 'commons-logging/commons-logging/1.2/commons-logging-1.2.jar'
6
+ require 'commons-codec/commons-codec/1.15/commons-codec-1.15.jar'
7
+ require 'org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.jar'
8
+ require 'org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar'
9
+ require 'org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar'
10
+ end
3
11
 
4
- require_jar("commons-logging", "commons-logging", "1.2")
5
- require_jar("org.apache.httpcomponents", "httpmime", "4.5.2")
6
- require_jar("commons-codec", "commons-codec", "1.10")
7
- require_jar("org.apache.httpcomponents", "httpclient", "4.5.2")
8
- require_jar("org.apache.httpcomponents", "httpcore", "4.4.4")
12
+ if defined? Jars
13
+ require_jar 'commons-logging', 'commons-logging', '1.2'
14
+ require_jar 'commons-codec', 'commons-codec', '1.15'
15
+ require_jar 'org.apache.httpcomponents', 'httpcore', '4.4.14'
16
+ require_jar 'org.apache.httpcomponents', 'httpclient', '4.5.13'
17
+ require_jar 'org.apache.httpcomponents', 'httpmime', '4.5.13'
18
+ end
Binary file
data/manticore.gemspec CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.required_ruby_version = '>= 2.3' # JRuby >= 9.1
23
+
22
24
  private_key = File.expand_path("~/.gemcert/gem-private_key.pem")
23
25
  if File.exists? private_key
24
26
  spec.signing_key = private_key
@@ -27,13 +29,11 @@ Gem::Specification.new do |spec|
27
29
 
28
30
  spec.add_dependency "openssl_pkcs8_pure"
29
31
 
30
- spec.add_development_dependency "bundler"
31
- spec.add_development_dependency "rake"
32
32
  spec.add_development_dependency "jar-dependencies", "~> 0.4.1"
33
33
 
34
- spec.requirements << "jar org.apache.httpcomponents:httpclient, '~> 4.5.0'"
35
- spec.requirements << "jar org.apache.httpcomponents:httpmime, '~> 4.5.0'"
34
+ spec.requirements << "jar org.apache.httpcomponents:httpclient, '~> 4.5.13'"
35
+ spec.requirements << "jar org.apache.httpcomponents:httpmime, '~> 4.5.13'"
36
36
  spec.requirements << "jar commons-logging:commons-logging, '~> 1.2'"
37
37
  spec.requirements << "jar commons-codec:commons-codec, '~> 1.9'"
38
- spec.requirements << "jar org.apache.httpcomponents:httpcore, '~> 4.4.4'"
38
+ spec.requirements << "jar org.apache.httpcomponents:httpcore, '~> 4.4.14'"
39
39
  end
@@ -1,12 +1,11 @@
1
1
  # encoding: utf-8
2
2
  require "spec_helper"
3
3
 
4
- java_import "org.apache.http.entity.mime.MultipartEntityBuilder"
5
- java_import "org.apache.http.entity.ContentType"
6
-
7
4
  describe Manticore::Client do
8
5
  let(:client) { Manticore::Client.new }
9
6
 
7
+ after { client.close }
8
+
10
9
  it "fetches a URL and return a response" do
11
10
  expect(client.get(local_server)).to be_a Manticore::Response
12
11
  end
@@ -96,7 +95,7 @@ describe Manticore::Client do
96
95
 
97
96
  describe "ignore_ssl_validation (deprecated option)" do
98
97
  context "when on" do
99
- let(:client) { Manticore::Client.new ssl: {verify: false} }
98
+ let(:client) { Manticore::Client.new ssl: { verify: false } }
100
99
 
101
100
  it "does not break on SSL validation errors" do
102
101
  expect { client.get("https://localhost:55444/").body }.to_not raise_exception
@@ -104,7 +103,7 @@ describe Manticore::Client do
104
103
  end
105
104
 
106
105
  context "when off" do
107
- let(:client) { Manticore::Client.new ssl: {verify: true} }
106
+ let(:client) { Manticore::Client.new ssl: { verify: true } }
108
107
 
109
108
  it "breaks on SSL validation errors" do
110
109
  expect { client.get("https://localhost:55444/").call }.to raise_exception(Manticore::ClientProtocolException)
@@ -130,7 +129,13 @@ describe Manticore::Client do
130
129
  let(:client) { Manticore::Client.new :ssl => {:verify => :strict} }
131
130
 
132
131
  it "breaks on SSL validation errors" do
133
- expect { client.get("https://localhost:55444/").call }.to raise_exception(Manticore::ClientProtocolException)
132
+ begin
133
+ client.get("https://localhost:55445/").body
134
+ rescue Manticore::ClientProtocolException => e
135
+ expect( e.cause ).to be_a javax.net.ssl.SSLHandshakeException
136
+ else
137
+ fail "exception not raised"
138
+ end
134
139
  end
135
140
  end
136
141
 
@@ -142,6 +147,29 @@ describe Manticore::Client do
142
147
  end
143
148
  end
144
149
 
150
+ context "when on and custom trust strategy is given" do
151
+ # let(:custom_trust_strategy) { Proc.new {|chain,type| true } }
152
+ let(:client) { Manticore::Client.new :ssl => {:verify => :strict, :trust_strategy => custom_trust_strategy} }
153
+ context 'and trust strategy approves the cert chain' do
154
+ let(:custom_trust_strategy) { Proc.new { |chain,type| true } }
155
+ it "verifies the request and succeed" do
156
+ expect { client.get("https://localhost:55444/").body }.to_not raise_exception
157
+ end
158
+ end
159
+ context 'and trust strategy does not approve the cert chain' do
160
+ let(:custom_trust_strategy) { Proc.new { |chain,type| false } }
161
+ it "breaks on SSL validation errors" do
162
+ begin
163
+ client.get("https://localhost:55445/").body
164
+ rescue Manticore::ClientProtocolException => e
165
+ expect( e.cause ).to be_a javax.net.ssl.SSLHandshakeException
166
+ else
167
+ fail "exception not raised"
168
+ end
169
+ end
170
+ end
171
+ end
172
+
145
173
  context "when the client specifies a protocol list" do
146
174
  let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/truststore.jks", __FILE__), truststore_password: "test123", protocols: ["TLSv1", "TLSv1.1", "TLSv1.2"]} }
147
175
 
@@ -151,10 +179,10 @@ describe Manticore::Client do
151
179
  end
152
180
 
153
181
  context "when on and custom trust store is given with the wrong password" do
154
- let(:client) { Manticore::Client.new :ssl => {verify: :strict, truststore: File.expand_path("../../ssl/truststore.jks", __FILE__), truststore_password: "wrongpass"} }
182
+ let(:ssl_opts) { { verify: :strict, truststore: File.expand_path("../../ssl/truststore.jks", __FILE__), truststore_password: "wrongpass" } }
155
183
 
156
184
  it "fails to load the keystore" do
157
- expect { client.get("https://localhost:55444/").body }.to raise_exception(Java::JavaIo::IOException)
185
+ expect { Manticore::Client.new(:ssl => ssl_opts) }.to raise_exception(Java::JavaIo::IOException)
158
186
  end
159
187
  end
160
188
 
@@ -187,7 +215,7 @@ describe Manticore::Client do
187
215
  let(:client) {
188
216
  Manticore::Client.new(
189
217
  :ssl => {
190
- verify: :strict,
218
+ verify: :default,
191
219
  ca_file: File.expand_path("../../ssl/root-ca.crt", __FILE__),
192
220
  client_cert: OpenSSL::X509::Certificate.new(File.read(File.expand_path("../../ssl/client.crt", __FILE__))),
193
221
  client_key: OpenSSL::PKey::RSA.new(File.read(File.expand_path("../../ssl/client.key", __FILE__))),
@@ -204,7 +232,7 @@ describe Manticore::Client do
204
232
  let(:client) {
205
233
  Manticore::Client.new(
206
234
  :ssl => {
207
- verify: :strict,
235
+ verify: :default,
208
236
  ca_file: File.expand_path("../../ssl/root-ca.crt", __FILE__),
209
237
  client_cert: File.read(File.expand_path("../../ssl/client.crt", __FILE__)),
210
238
  client_key: File.read(File.expand_path("../../ssl/client.key", __FILE__)),
@@ -227,6 +255,27 @@ describe Manticore::Client do
227
255
  it "does not break on expired SSL certificates" do
228
256
  expect { client.get("https://localhost:55446/").body }.to_not raise_exception
229
257
  end
258
+
259
+ it "does not break on untrusted certificates" do
260
+ expect { client.get("https://localhost:55447/").body }.to_not raise_exception
261
+ end
262
+
263
+ context "when custom trust strategy is given" do
264
+ # let(:custom_trust_strategy) { Proc.new {|chain,type| true } }
265
+ let(:client) { Manticore::Client.new :ssl => {:verify => :disable, :trust_strategy => custom_trust_strategy} }
266
+ context 'and trust strategy approves the cert chain' do
267
+ let(:custom_trust_strategy) { Proc.new { |chain,type| true } }
268
+ it "verifies the request and succeed" do
269
+ expect { client.get("https://localhost:55444/").body }.to_not raise_exception
270
+ end
271
+ end
272
+ context 'and trust strategy does not approve the cert chain' do
273
+ let(:custom_trust_strategy) { Proc.new { |chain,type| false } }
274
+ it "verifies the request and succeed" do
275
+ expect { client.get("https://localhost:55444/").body }.to_not raise_exception
276
+ end
277
+ end
278
+ end
230
279
  end
231
280
 
232
281
  context "against a server that verifies clients" do
@@ -266,11 +315,11 @@ describe Manticore::Client do
266
315
  end
267
316
 
268
317
  describe ":cipher_suites" do
269
- skip
318
+ skip 'TODO: someone should write the spec'
270
319
  end
271
320
 
272
321
  describe ":protocols" do
273
- skip
322
+ skip 'TODO: someone should write the spec'
274
323
  end
275
324
  end
276
325
 
@@ -525,7 +574,9 @@ describe Manticore::Client do
525
574
 
526
575
  it "sends an arbitrary entity" do
527
576
  f = open(File.expand_path(File.join(__FILE__, "..", "..", "spec_helper.rb")), "r").to_inputstream
528
- multipart_entity = MultipartEntityBuilder.create.add_text_body("foo", "bar").add_binary_body("whatever", f, ContentType::TEXT_PLAIN, __FILE__)
577
+ multipart_entity = org.apache.http.entity.mime.MultipartEntityBuilder.create.
578
+ add_text_body("foo", "bar").
579
+ add_binary_body("whatever", f, org.apache.http.entity.ContentType::TEXT_PLAIN, __FILE__)
529
580
  response = client.post(local_server, entity: multipart_entity.build)
530
581
  expect(response.body).to match "RSpec.configure"
531
582
  end
@@ -736,14 +787,13 @@ describe Manticore::Client do
736
787
  context "with a misbehaving endpoint" do
737
788
  let(:port) do
738
789
  p = 4000
739
- server = nil
740
790
  begin
741
791
  server = TCPServer.new p
742
792
  rescue Errno::EADDRINUSE
743
793
  p += 1
744
794
  retry
745
795
  ensure
746
- server.close
796
+ server&.close
747
797
  end
748
798
  p
749
799
  end
@@ -764,6 +814,7 @@ describe Manticore::Client do
764
814
  ].join("\n"))
765
815
  client.close
766
816
  rescue IOError => e
817
+ warn "caught an error: #{e.inspect}"
767
818
  break
768
819
  end
769
820
  end
@@ -830,7 +881,13 @@ describe Manticore::Client do
830
881
  let(:client) { Manticore::Client.new request_timeout: 1, connect_timeout: 1, socket_timeout: 1 }
831
882
 
832
883
  it "times out" do
833
- expect { client.get(local_server "/?sleep=2").body }.to raise_exception(Manticore::SocketTimeout)
884
+ begin
885
+ client.get(local_server "/?sleep=2").body
886
+ rescue Manticore::SocketTimeout => e
887
+ expect( e.cause ).to be_a java.net.SocketTimeoutException
888
+ else
889
+ fail "exception not raised"
890
+ end
834
891
  end
835
892
 
836
893
  it "times out when custom request options are passed" do
@@ -0,0 +1,168 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+ describe Manticore::Client::TrustStrategies do
4
+ describe '#coerce' do
5
+ subject(:coerced) { described_class.coerce(input) }
6
+ context 'with a nil value' do
7
+ let(:input) { nil }
8
+ it 'returns the value unchanged' do
9
+ expect(coerced).to be_nil
10
+ end
11
+ end
12
+ context 'with an implementation of org.apache.http.conn.ssl.TrustStrategy' do
13
+ let(:input) { org.apache.http.conn.ssl.TrustAllStrategy::INSTANCE }
14
+ it 'returns the value unchanged' do
15
+ expect(coerced).to be input
16
+ end
17
+ end
18
+ context 'with a Proc' do
19
+ let(:input) { ->(chain, type) { true } }
20
+ it 'wraps the proc in a `CustomTrustStrategy`' do
21
+ expect(Manticore::Client::CustomTrustStrategy).to receive(:new).with(input).and_call_original
22
+ expect(described_class.coerce(input)).to be_a_kind_of Manticore::Client::CustomTrustStrategy
23
+ end
24
+ end
25
+ end
26
+
27
+ describe '#combine' do
28
+ context 'when left-hand value is nil' do
29
+ let(:left_hand_strategy) { nil }
30
+ let(:right_hand_strategy) { described_class.coerce(->(chain,type){ true }) }
31
+ it 'returns the right-hand value coerced' do
32
+ expect(described_class).to receive(:coerce).with(right_hand_strategy).and_call_original
33
+ expect(described_class.combine(left_hand_strategy, right_hand_strategy)).to be right_hand_strategy
34
+ end
35
+ end
36
+ context 'when the right-hand value is nil' do
37
+ let(:left_hand_strategy) { described_class.coerce(->(chain,type){ true }) }
38
+ let(:right_hand_strategy) { nil }
39
+ it 'returns the left-hand value coerced' do
40
+ expect(described_class).to receive(:coerce).with(left_hand_strategy).and_call_original
41
+ expect(described_class.combine(left_hand_strategy, right_hand_strategy)).to be left_hand_strategy
42
+ end
43
+ end
44
+ context 'when neither value is nil' do
45
+ let(:left_hand_strategy) { described_class.coerce(->(chain,type){ true }) }
46
+ let(:right_hand_strategy) { described_class.coerce(->(chain,type){ true }) }
47
+
48
+ it 'returns a CombinedTrustStrategy' do
49
+ expect(Manticore::Client::CombinedTrustStrategy)
50
+ .to receive(:new).with(left_hand_strategy, right_hand_strategy).and_call_original
51
+
52
+ # ensures that the values are coerced.
53
+ expect(described_class).to receive(:coerce).with(left_hand_strategy).and_call_original
54
+ expect(described_class).to receive(:coerce).with(right_hand_strategy).and_call_original
55
+
56
+ combined = described_class.combine(left_hand_strategy, right_hand_strategy)
57
+ expect(combined).to be_a_kind_of Manticore::Client::CombinedTrustStrategy
58
+ end
59
+ end
60
+ context 'when both values are nil' do
61
+ let(:left_hand_strategy) { nil }
62
+ let(:right_hand_strategy) { nil }
63
+
64
+ it 'returns nil' do
65
+ expect(described_class.combine(left_hand_strategy, right_hand_strategy)).to be nil
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ describe Manticore::Client::CustomTrustStrategy do
72
+
73
+ subject(:custom_trust_strategy) { described_class.new(trust_strategy_proc) }
74
+
75
+ context 'when called via Java interface' do
76
+ def load_java_cert(file_path)
77
+ pem_contents = File.read(file_path)
78
+ cf = java.security.cert.CertificateFactory::getInstance("X.509")
79
+ is = java.io.ByteArrayInputStream.new(pem_contents.to_java_bytes)
80
+ cf.generateCertificate(is)
81
+ end
82
+
83
+ let(:java_host_cert) { load_java_cert(File.expand_path("../../ssl/host.crt", __FILE__)) }
84
+ let(:java_root_cert) { load_java_cert(File.expand_path("../../ssl/root-ca.crt", __FILE__)) }
85
+ let(:java_chain) { [java_host_cert, java_root_cert].to_java(java.security.cert.X509Certificate) }
86
+ let(:java_type) { java.lang.String.new("my_type".to_java_bytes) }
87
+
88
+ subject(:java_trust_strategy) { custom_trust_strategy.to_java(org.apache.http.conn.ssl.TrustStrategy) }
89
+
90
+ context 'when called with Java Certs and a Java String' do
91
+ let(:trust_strategy_proc) { ->(chain,type) { true } }
92
+ it 'yields an enum of equivalent Ruby certs and an equivalent Ruby String' do
93
+ expect(trust_strategy_proc).to receive(:call) do |chain, type|
94
+ expect(chain.to_a.length).to eq java_chain.length
95
+ chain.each_with_index do |cert, idx|
96
+ expect(cert).to be_a_kind_of OpenSSL::X509::Certificate
97
+ expect(cert.to_der).to eq String.from_java_bytes(java_chain[idx].encoded)
98
+ end
99
+ expect(type).to be_a_kind_of String
100
+ expect(type).to eq String.from_java_bytes(java_type.bytes)
101
+ end
102
+
103
+ expect(java_trust_strategy.isTrusted(java_chain, java_type)).to be true
104
+ end
105
+ end
106
+
107
+ context 'when the ruby block returns false' do
108
+ let(:trust_strategy_proc) { ->(chain,type) { false } }
109
+ it 'returns false' do
110
+ expect(java_trust_strategy.isTrusted(java_chain, java_type)).to be false
111
+ end
112
+ end
113
+
114
+ context 'when the ruby block returns true' do
115
+ let(:trust_strategy_proc) { ->(chain,type) { true } }
116
+ it 'returns true' do
117
+ expect(java_trust_strategy.isTrusted(java_chain, java_type)).to be true
118
+ end
119
+ end
120
+
121
+ context 'when the ruby block raises an exception' do
122
+ let(:trust_strategy_proc) { ->(chain, type) { fail(OpenSSL::X509::CertificateError, 'intentional') } }
123
+ it 'throws a CertificateException' do
124
+ expect {
125
+ java_trust_strategy.isTrusted(java_chain, java_type)
126
+ }.to raise_exception(java.security.cert.CertificateException)
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ describe Manticore::Client::CombinedTrustStrategy do
133
+ let(:always_trust_strategy) { ->(chain,type) { true } }
134
+ let(:never_trust_strategy) { ->(chain,type) { false } }
135
+
136
+ subject(:combined_trust_strategy) { Manticore::Client::TrustStrategies.combine(left_hand_strategy, right_hand_strategy) }
137
+
138
+ context 'when left-hand strategy trusts' do
139
+ let(:left_hand_strategy) { always_trust_strategy }
140
+ context 'when right-hand strategy trusts' do
141
+ let(:right_hand_strategy) { always_trust_strategy }
142
+ it 'trusts' do
143
+ expect(combined_trust_strategy.trusted?([],'ignored')).to be true
144
+ end
145
+ end
146
+ context 'when right-hand strategy does not trust' do
147
+ let(:right_hand_strategy) { never_trust_strategy }
148
+ it 'trusts' do
149
+ expect(combined_trust_strategy.trusted?([],'ignored')).to be true
150
+ end
151
+ end
152
+ end
153
+ context 'when left-hand strategy does not trust' do
154
+ let(:left_hand_strategy) { never_trust_strategy }
155
+ context 'when right-hand strategy trusts' do
156
+ let(:right_hand_strategy) { always_trust_strategy }
157
+ it 'trusts' do
158
+ expect(combined_trust_strategy.trusted?([],'ignored')).to be true
159
+ end
160
+ end
161
+ context 'when right-hand strategy does not trust' do
162
+ let(:right_hand_strategy) { never_trust_strategy }
163
+ it 'does not trust' do
164
+ expect(combined_trust_strategy.trusted?([],'ignored')).to be false
165
+ end
166
+ end
167
+ end
168
+ end
@@ -6,7 +6,7 @@ describe Manticore::Response do
6
6
 
7
7
  its(:headers) { is_expected.to be_a Hash }
8
8
  its(:body) { is_expected.to be_a String }
9
- its(:length) { is_expected.to be_a Fixnum }
9
+ its(:length) { is_expected.to be_a Integer }
10
10
 
11
11
  it "provides response header lookup via #[]" do
12
12
  expect(subject["Content-Type"]).to eq "application/json"
data/spec/spec_helper.rb CHANGED
@@ -151,6 +151,7 @@ RSpec.configure do |c|
151
151
  start_ssl_server 55444
152
152
  start_ssl_server 55445, :SSLVerifyClient => OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT, :SSLCACertificateFile => File.expand_path("../ssl/root-ca.crt", __FILE__)
153
153
  start_ssl_server 55446, cert: File.expand_path("../ssl/host-expired.crt", __FILE__)
154
+ start_ssl_server 55447, cert: File.expand_path("../ssl/host-untrusted.crt", __FILE__), SSLCACertificateFile: File.expand_path("../ssl/root-untrusted-ca.crt", __FILE__)
154
155
 
155
156
  Manticore.disable_httpcomponents_logging!
156
157
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manticore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.9.0
5
5
  platform: java
6
6
  authors:
7
7
  - Chris Heald
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-29 00:00:00.000000000 Z
11
+ date: 2022-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -17,36 +17,8 @@ dependencies:
17
17
  - !ruby/object:Gem::Version
18
18
  version: '0'
19
19
  name: openssl_pkcs8_pure
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- name: bundler
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- name: rake
48
- type: :development
49
20
  prerelease: false
21
+ type: :runtime
50
22
  version_requirements: !ruby/object:Gem::Requirement
51
23
  requirements:
52
24
  - - ">="
@@ -59,8 +31,8 @@ dependencies:
59
31
  - !ruby/object:Gem::Version
60
32
  version: 0.4.1
61
33
  name: jar-dependencies
62
- type: :development
63
34
  prerelease: false
35
+ type: :development
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
@@ -86,12 +58,13 @@ files:
86
58
  - ext/manticore/org/manticore/HttpGetWithEntity.java
87
59
  - ext/manticore/org/manticore/Manticore.java
88
60
  - gem-public_cert.pem
89
- - lib/commons-codec/commons-codec/1.10/commons-codec-1.10.jar
61
+ - lib/commons-codec/commons-codec/1.15/commons-codec-1.15.jar
90
62
  - lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
91
63
  - lib/faraday/adapter/manticore.rb
92
64
  - lib/manticore.rb
93
65
  - lib/manticore/client.rb
94
66
  - lib/manticore/client/proxies.rb
67
+ - lib/manticore/client/trust_strategies.rb
95
68
  - lib/manticore/cookie.rb
96
69
  - lib/manticore/facade.rb
97
70
  - lib/manticore/java_extensions.rb
@@ -99,13 +72,14 @@ files:
99
72
  - lib/manticore/stubbed_response.rb
100
73
  - lib/manticore/version.rb
101
74
  - lib/manticore_jars.rb
102
- - lib/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar
103
- - lib/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar
104
- - lib/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar
75
+ - lib/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar
76
+ - lib/org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.jar
77
+ - lib/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar
105
78
  - lib/org/manticore/manticore-ext.jar
106
79
  - manticore.gemspec
107
80
  - spec/manticore/client_proxy_spec.rb
108
81
  - spec/manticore/client_spec.rb
82
+ - spec/manticore/client_trust_strategies_spec.rb
109
83
  - spec/manticore/cookie_spec.rb
110
84
  - spec/manticore/facade_spec.rb
111
85
  - spec/manticore/response_spec.rb
@@ -124,25 +98,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
98
  requirements:
125
99
  - - ">="
126
100
  - !ruby/object:Gem::Version
127
- version: '0'
101
+ version: '2.3'
128
102
  required_rubygems_version: !ruby/object:Gem::Requirement
129
103
  requirements:
130
104
  - - ">="
131
105
  - !ruby/object:Gem::Version
132
106
  version: '0'
133
107
  requirements:
134
- - jar org.apache.httpcomponents:httpclient, '~> 4.5.0'
135
- - jar org.apache.httpcomponents:httpmime, '~> 4.5.0'
108
+ - jar org.apache.httpcomponents:httpclient, '~> 4.5.13'
109
+ - jar org.apache.httpcomponents:httpmime, '~> 4.5.13'
136
110
  - jar commons-logging:commons-logging, '~> 1.2'
137
111
  - jar commons-codec:commons-codec, '~> 1.9'
138
- - jar org.apache.httpcomponents:httpcore, '~> 4.4.4'
139
- rubygems_version: 3.0.6
112
+ - jar org.apache.httpcomponents:httpcore, '~> 4.4.14'
113
+ rubygems_version: 3.2.29
140
114
  signing_key:
141
115
  specification_version: 4
142
116
  summary: Manticore is an HTTP client built on the Apache HttpCore components
143
117
  test_files:
144
118
  - spec/manticore/client_proxy_spec.rb
145
119
  - spec/manticore/client_spec.rb
120
+ - spec/manticore/client_trust_strategies_spec.rb
146
121
  - spec/manticore/cookie_spec.rb
147
122
  - spec/manticore/facade_spec.rb
148
123
  - spec/manticore/response_spec.rb