excon 1.2.1 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/cacert.pem +32 -87
- data/excon.gemspec +20 -17
- data/lib/excon/connection.rb +3 -3
- data/lib/excon/error.rb +2 -2
- data/lib/excon/middlewares/redirect_follower.rb +2 -2
- data/lib/excon/ssl_socket.rb +1 -1
- data/lib/excon/test/plugin/server/puma.rb +1 -1
- data/lib/excon/test/plugin/server/unicorn.rb +5 -5
- data/lib/excon/test/plugin/server/webrick.rb +1 -1
- data/lib/excon/test/server.rb +1 -1
- data/lib/excon/utils.rb +30 -33
- data/lib/excon/version.rb +1 -1
- metadata +24 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f78ec13c3b7cc67758d4f7f61d1c7ea4c53fbc7deaba119f2b4dac03f9db892
|
4
|
+
data.tar.gz: d52117b0d59efeb242703048d0ced7401a23aefe415c92a4e9698d3ca6ae95ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74c08361f5c838c98d5f16ad4faa7b6d0fc74f5522e1a03f854a592f35c96f1a463e7946fdcf7e47d2861d52665bf7dfe6e8990e74d65f2a6f2fde2d5e2d410f
|
7
|
+
data.tar.gz: 7acdd19b51708652664484ffdbedd1ffc9f3f20816a8544771a8082b78d802ca1e052bea39b8be94cf9e20719e82aff7170f9a596db4f0549bfa54106faec68f
|
data/data/cacert.pem
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
##
|
2
2
|
## Bundle of CA Root Certificates
|
3
3
|
##
|
4
|
-
## Certificate data from Mozilla as of: Tue
|
4
|
+
## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT
|
5
5
|
##
|
6
6
|
## Find updated versions here: https://curl.se/docs/caextract.html
|
7
7
|
##
|
@@ -16,7 +16,7 @@
|
|
16
16
|
## Just configure this file as the SSLCACertificateFile.
|
17
17
|
##
|
18
18
|
## Conversion done with mk-ca-bundle.pl version 1.29.
|
19
|
-
## SHA256:
|
19
|
+
## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116
|
20
20
|
##
|
21
21
|
|
22
22
|
|
@@ -584,27 +584,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
|
584
584
|
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
585
585
|
-----END CERTIFICATE-----
|
586
586
|
|
587
|
-
SecureSign RootCA11
|
588
|
-
===================
|
589
|
-
-----BEGIN CERTIFICATE-----
|
590
|
-
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
591
|
-
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
592
|
-
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
593
|
-
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
594
|
-
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
595
|
-
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
596
|
-
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
597
|
-
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
598
|
-
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
599
|
-
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
600
|
-
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
601
|
-
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
602
|
-
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
603
|
-
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
604
|
-
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
605
|
-
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
606
|
-
-----END CERTIFICATE-----
|
607
|
-
|
608
587
|
Microsec e-Szigno Root CA 2009
|
609
588
|
==============================
|
610
589
|
-----BEGIN CERTIFICATE-----
|
@@ -2319,40 +2298,6 @@ hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB
|
|
2319
2298
|
dBb9HxEGmpv0
|
2320
2299
|
-----END CERTIFICATE-----
|
2321
2300
|
|
2322
|
-
Entrust Root Certification Authority - G4
|
2323
|
-
=========================================
|
2324
|
-
-----BEGIN CERTIFICATE-----
|
2325
|
-
MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV
|
2326
|
-
BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu
|
2327
|
-
bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1
|
2328
|
-
dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
|
2329
|
-
dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT
|
2330
|
-
AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
|
2331
|
-
L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv
|
2332
|
-
cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
2333
|
-
cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D
|
2334
|
-
umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV
|
2335
|
-
3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds
|
2336
|
-
8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ
|
2337
|
-
e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7
|
2338
|
-
ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X
|
2339
|
-
xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV
|
2340
|
-
7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
|
2341
|
-
dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW
|
2342
|
-
Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T
|
2343
|
-
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n
|
2344
|
-
MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q
|
2345
|
-
jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht
|
2346
|
-
7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK
|
2347
|
-
YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt
|
2348
|
-
jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+
|
2349
|
-
m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW
|
2350
|
-
RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA
|
2351
|
-
JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G
|
2352
|
-
+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT
|
2353
|
-
kcpG2om3PVODLAgfi49T3f+sHw==
|
2354
|
-
-----END CERTIFICATE-----
|
2355
|
-
|
2356
2301
|
Microsoft ECC Root Certificate Authority 2017
|
2357
2302
|
=============================================
|
2358
2303
|
-----BEGIN CERTIFICATE-----
|
@@ -2602,6 +2547,36 @@ vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
|
|
2602
2547
|
CAezNIm8BZ/3Hobui3A=
|
2603
2548
|
-----END CERTIFICATE-----
|
2604
2549
|
|
2550
|
+
GLOBALTRUST 2020
|
2551
|
+
================
|
2552
|
+
-----BEGIN CERTIFICATE-----
|
2553
|
+
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
|
2578
|
+
-----END CERTIFICATE-----
|
2579
|
+
|
2605
2580
|
ANF Secure Server Root CA
|
2606
2581
|
=========================
|
2607
2582
|
-----BEGIN CERTIFICATE-----
|
@@ -3140,36 +3115,6 @@ AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8
|
|
3140
3115
|
rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
|
3141
3116
|
-----END CERTIFICATE-----
|
3142
3117
|
|
3143
|
-
Security Communication RootCA3
|
3144
|
-
==============================
|
3145
|
-
-----BEGIN CERTIFICATE-----
|
3146
|
-
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
-
IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD
|
3148
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB
|
3161
|
-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
-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
-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
-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
-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
-
XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml
|
3167
|
-
+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
-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
-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
-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
|
3171
|
-
-----END CERTIFICATE-----
|
3172
|
-
|
3173
3118
|
Security Communication ECC RootCA1
|
3174
3119
|
==================================
|
3175
3120
|
-----BEGIN CERTIFICATE-----
|
data/excon.gemspec
CHANGED
@@ -1,45 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
|
2
4
|
require 'excon/version'
|
3
5
|
|
4
6
|
Gem::Specification.new do |s|
|
5
7
|
s.name = 'excon'
|
6
8
|
s.version = Excon::VERSION
|
7
|
-
s.summary =
|
8
|
-
s.description =
|
9
|
-
s.authors = [
|
9
|
+
s.summary = 'speed, persistence, http(s)'
|
10
|
+
s.description = 'EXtended http(s) CONnections'
|
11
|
+
s.authors = ['dpiddy (Dan Peterson)', 'geemus (Wesley Beary)', 'nextmat (Matt Sanders)']
|
10
12
|
s.email = 'geemus@gmail.com'
|
11
13
|
s.homepage = 'https://github.com/excon/excon'
|
12
14
|
s.license = 'MIT'
|
13
|
-
s.rdoc_options = [
|
15
|
+
s.rdoc_options = ['--charset=UTF-8']
|
14
16
|
s.extra_rdoc_files = %w[README.md CONTRIBUTORS.md CONTRIBUTING.md]
|
15
17
|
s.files = `git ls-files -- data/* lib/*`.split("\n") + [
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
'CONTRIBUTING.md',
|
19
|
+
'CONTRIBUTORS.md',
|
20
|
+
'LICENSE.md',
|
21
|
+
'README.md',
|
22
|
+
'excon.gemspec'
|
21
23
|
]
|
22
24
|
s.required_ruby_version = '>= 2.7.0'
|
23
25
|
|
24
|
-
s.add_development_dependency('rspec', '>= 3.5.0')
|
25
26
|
s.add_development_dependency('activesupport')
|
26
27
|
s.add_development_dependency('delorean')
|
27
28
|
s.add_development_dependency('eventmachine', '>= 1.0.4')
|
29
|
+
s.add_development_dependency('json', '>= 1.8.5')
|
28
30
|
s.add_development_dependency('open4')
|
31
|
+
s.add_development_dependency('puma')
|
29
32
|
s.add_development_dependency('rake')
|
33
|
+
s.add_development_dependency('rspec', '>= 3.5.0')
|
30
34
|
s.add_development_dependency('shindo')
|
31
35
|
s.add_development_dependency('sinatra')
|
32
36
|
s.add_development_dependency('sinatra-contrib')
|
33
|
-
s.add_development_dependency('json', '>= 1.8.5')
|
34
|
-
s.add_development_dependency('puma')
|
35
37
|
s.add_development_dependency('webrick')
|
36
38
|
|
37
39
|
s.metadata = {
|
38
|
-
'
|
39
|
-
'
|
40
|
-
'changelog_uri' => 'https://github.com/excon/excon/blob/master/changelog.txt',
|
40
|
+
'bug_tracker_uri' => 'https://github.com/excon/excon/issues',
|
41
|
+
'changelog_uri' => 'https://github.com/excon/excon/blob/master/changelog.txt',
|
41
42
|
'documentation_uri' => 'https://github.com/excon/excon/blob/master/README.md',
|
42
|
-
'
|
43
|
-
'
|
43
|
+
'funding_uri' => 'https://github.com/sponsors/geemus',
|
44
|
+
'homepage_uri' => 'https://github.com/excon/excon',
|
45
|
+
'source_code_uri' => 'https://github.com/excon/excon',
|
46
|
+
'wiki_uri' => 'https://github.com/excon/excon/wiki'
|
44
47
|
}
|
45
48
|
end
|
data/lib/excon/connection.rb
CHANGED
@@ -159,7 +159,7 @@ module Excon
|
|
159
159
|
if chunk.length > 0
|
160
160
|
socket(datum).write(chunk.length.to_s(16) << CR_NL << chunk << CR_NL)
|
161
161
|
else
|
162
|
-
socket(datum).write(
|
162
|
+
socket(datum).write("0#{CR_NL}#{CR_NL}")
|
163
163
|
break
|
164
164
|
end
|
165
165
|
end
|
@@ -329,7 +329,7 @@ module Excon
|
|
329
329
|
# @param pipeline_params [Array<Hash>] An array of one or more optional params, override defaults set in Connection.new, see #request for details
|
330
330
|
def requests(pipeline_params)
|
331
331
|
pipeline_params.each {|params| params.merge!(:pipeline => true, :persistent => true) }
|
332
|
-
pipeline_params.last
|
332
|
+
pipeline_params.last[:persistent] = @data[:persistent]
|
333
333
|
|
334
334
|
responses = pipeline_params.map do |params|
|
335
335
|
request(params)
|
@@ -511,7 +511,7 @@ module Excon
|
|
511
511
|
end
|
512
512
|
|
513
513
|
def raise_socket_error(error)
|
514
|
-
if error.message
|
514
|
+
if error.message.include?('certificate verify failed')
|
515
515
|
raise(Excon::Errors::CertificateError.new(error))
|
516
516
|
else
|
517
517
|
raise(Excon::Errors::SocketError.new(error))
|
data/lib/excon/error.rb
CHANGED
@@ -216,8 +216,8 @@ or:
|
|
216
216
|
|
217
217
|
klasses.each do |klass|
|
218
218
|
class_name = klass.to_s
|
219
|
-
unless class_name
|
220
|
-
class_name = klass.to_s + 'Error' if class_name
|
219
|
+
unless class_name.match?(/Error\Z/)
|
220
|
+
class_name = klass.to_s + 'Error' if class_name.match?(legacy_re)
|
221
221
|
end
|
222
222
|
Excon::Errors.const_set(class_name, Excon::Error.const_get(klass))
|
223
223
|
end
|
@@ -67,8 +67,8 @@ module Excon
|
|
67
67
|
:query => uri.query
|
68
68
|
)
|
69
69
|
|
70
|
-
params
|
71
|
-
params
|
70
|
+
params[:user] = Utils.unescape_uri(uri.user) if uri.user
|
71
|
+
params[:password] = Utils.unescape_uri(uri.password) if uri.password
|
72
72
|
|
73
73
|
response = Excon::Connection.new(params).request
|
74
74
|
datum.merge!({
|
data/lib/excon/ssl_socket.rb
CHANGED
@@ -63,7 +63,7 @@ module Excon
|
|
63
63
|
unless ca_file || ca_path || cert_store
|
64
64
|
# workaround issue #257 (JRUBY-6970)
|
65
65
|
ca_file = DEFAULT_CA_FILE
|
66
|
-
ca_file = ca_file.gsub(/^jar:/, '') if ca_file
|
66
|
+
ca_file = ca_file.gsub(/^jar:/, '') if ca_file.match?(/^jar:file:\//)
|
67
67
|
|
68
68
|
begin
|
69
69
|
ssl_context.cert_store.add_file(ca_file)
|
@@ -7,7 +7,7 @@ module Excon
|
|
7
7
|
open_process(RbConfig.ruby, '-S', 'puma', '-b', bind_uri.to_s, app_str)
|
8
8
|
process_stderr = ""
|
9
9
|
line = ''
|
10
|
-
until line
|
10
|
+
until line.include?('Use Ctrl-C to stop')
|
11
11
|
line = read.gets
|
12
12
|
raise process_stderr if line.nil?
|
13
13
|
process_stderr << line
|
@@ -12,19 +12,19 @@ module Excon
|
|
12
12
|
host = bind_uri.host.gsub(/[\[\]]/, '')
|
13
13
|
bind_str = "#{host}:#{bind_uri.port}"
|
14
14
|
end
|
15
|
-
args = [
|
15
|
+
args = [
|
16
16
|
RbConfig.ruby,
|
17
17
|
'-S',
|
18
|
-
'unicorn',
|
19
|
-
'--no-default-middleware',
|
18
|
+
'unicorn',
|
19
|
+
'--no-default-middleware',
|
20
20
|
'-l',
|
21
|
-
bind_str,
|
21
|
+
bind_str,
|
22
22
|
app_str
|
23
23
|
]
|
24
24
|
open_process(*args)
|
25
25
|
process_stderr = ''
|
26
26
|
line = ''
|
27
|
-
until line
|
27
|
+
until line.include?('worker=0 ready')
|
28
28
|
line = error.gets
|
29
29
|
raise process_stderr if line.nil?
|
30
30
|
process_stderr << line
|
@@ -10,7 +10,7 @@ module Excon
|
|
10
10
|
open_process(RbConfig.ruby, '-S', 'rackup', '-s', 'webrick', '--host', host, '--port', port, app_str)
|
11
11
|
process_stderr = ""
|
12
12
|
line = ''
|
13
|
-
until line
|
13
|
+
until line.include?('HTTPServer#start')
|
14
14
|
line = error.gets
|
15
15
|
raise process_stderr if line.nil?
|
16
16
|
process_stderr << line
|
data/lib/excon/test/server.rb
CHANGED
@@ -73,7 +73,7 @@ module Excon
|
|
73
73
|
while (line = lines.shift)
|
74
74
|
case line
|
75
75
|
when /(ERROR|Error)/
|
76
|
-
unless line
|
76
|
+
unless line.match?(/(null cert chain|did not return a certificate|SSL_read:: internal error)/)
|
77
77
|
in_err = true
|
78
78
|
puts
|
79
79
|
end
|
data/lib/excon/utils.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Excon
|
3
4
|
module Utils
|
4
|
-
|
5
|
+
module_function
|
5
6
|
|
6
|
-
CONTROL = (0x0..0x1f).map
|
7
|
+
CONTROL = "#{(0x0..0x1f).map(&:chr).join}\u007F"
|
7
8
|
DELIMS = '<>#%"'
|
8
9
|
UNWISE = '{}|\\^[]`'
|
9
|
-
NONASCII = (0x80..0xff).map
|
10
|
-
UNESCAPED = /([#{
|
11
|
-
ESCAPED = /%([0-9a-fA-F]{2})
|
10
|
+
NONASCII = (0x80..0xff).map(&:chr).join
|
11
|
+
UNESCAPED = /([#{Regexp.escape("#{CONTROL} #{DELIMS}#{UNWISE}#{NONASCII}")}])/.freeze
|
12
|
+
ESCAPED = /%([0-9a-fA-F]{2})/.freeze
|
12
13
|
|
13
14
|
def binary_encode(string)
|
14
15
|
if FORCE_ENC && string.encoding != Encoding::ASCII_8BIT
|
@@ -23,9 +24,8 @@ module Excon
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def connection_uri(datum = @data)
|
26
|
-
unless datum
|
27
|
-
|
28
|
-
end
|
27
|
+
raise ArgumentError, '`datum` must be given unless called on a Connection' unless datum
|
28
|
+
|
29
29
|
if datum[:scheme] == UNIX
|
30
30
|
"#{datum[:scheme]}://#{datum[:socket]}"
|
31
31
|
else
|
@@ -36,21 +36,15 @@ module Excon
|
|
36
36
|
# Redact sensitive info from provided data
|
37
37
|
def redact(datum)
|
38
38
|
datum = datum.dup
|
39
|
-
if datum.
|
40
|
-
if datum[:headers].
|
39
|
+
if datum.key?(:headers)
|
40
|
+
if datum[:headers].key?('Authorization') || datum[:headers].key?('Proxy-Authorization')
|
41
41
|
datum[:headers] = datum[:headers].dup
|
42
42
|
end
|
43
|
-
if datum[:headers].
|
44
|
-
|
45
|
-
end
|
46
|
-
if datum[:headers].has_key?('Proxy-Authorization')
|
47
|
-
datum[:headers]['Proxy-Authorization'] = REDACTED
|
48
|
-
end
|
43
|
+
datum[:headers]['Authorization'] = REDACTED if datum[:headers].key?('Authorization')
|
44
|
+
datum[:headers]['Proxy-Authorization'] = REDACTED if datum[:headers].key?('Proxy-Authorization')
|
49
45
|
end
|
50
|
-
if datum.
|
51
|
-
|
52
|
-
end
|
53
|
-
if datum.has_key?(:proxy) && datum[:proxy] && datum[:proxy].has_key?(:password)
|
46
|
+
datum[:password] = REDACTED if datum.key?(:password)
|
47
|
+
if datum.key?(:proxy) && datum[:proxy]&.key?(:password)
|
54
48
|
datum[:proxy] = datum[:proxy].dup
|
55
49
|
datum[:proxy][:password] = REDACTED
|
56
50
|
end
|
@@ -76,13 +70,13 @@ module Excon
|
|
76
70
|
end
|
77
71
|
|
78
72
|
def query_string(datum)
|
79
|
-
str =
|
73
|
+
str = +''
|
80
74
|
case datum[:query]
|
81
75
|
when String
|
82
76
|
str << '?' << datum[:query]
|
83
77
|
when Hash
|
84
78
|
str << '?'
|
85
|
-
datum[:query].sort_by {|k,_| k.to_s }.each do |key, values|
|
79
|
+
datum[:query].sort_by { |k, _| k.to_s }.each do |key, values|
|
86
80
|
key = CGI.escape(key.to_s)
|
87
81
|
if values.nil?
|
88
82
|
str << key << '&'
|
@@ -100,46 +94,49 @@ module Excon
|
|
100
94
|
# Splits a header value +str+ according to HTTP specification.
|
101
95
|
def split_header_value(str)
|
102
96
|
return [] if str.nil?
|
97
|
+
|
103
98
|
str = str.dup.strip
|
104
99
|
str = binary_encode(str)
|
105
|
-
str.scan(
|
106
|
-
(?:,\s*|\Z)
|
100
|
+
str.scan(/\G((?:"(?:\\.|[^"])+?"|[^",])+)
|
101
|
+
(?:,\s*|\Z)/xn).flatten
|
107
102
|
end
|
108
103
|
|
109
104
|
# Escapes HTTP reserved and unwise characters in +str+
|
110
105
|
def escape_uri(str)
|
111
106
|
str = str.dup
|
112
107
|
str = binary_encode(str)
|
113
|
-
str.gsub(UNESCAPED) {
|
108
|
+
str.gsub(UNESCAPED) { format('%%%02X', ::Regexp.last_match(1)[0].ord) }
|
114
109
|
end
|
115
110
|
|
116
111
|
# Unescapes HTTP reserved and unwise characters in +str+
|
117
112
|
def unescape_uri(str)
|
118
113
|
str = str.dup
|
119
114
|
str = binary_encode(str)
|
120
|
-
str.gsub(ESCAPED) {
|
115
|
+
str.gsub(ESCAPED) { ::Regexp.last_match(1).hex.chr }
|
121
116
|
end
|
122
117
|
|
123
118
|
# Unescape form encoded values in +str+
|
124
119
|
def unescape_form(str)
|
125
120
|
str = str.dup
|
126
121
|
str = binary_encode(str)
|
127
|
-
str.
|
128
|
-
str.gsub(ESCAPED) {
|
122
|
+
str.tr!('+', ' ')
|
123
|
+
str.gsub(ESCAPED) { ::Regexp.last_match(1).hex.chr }
|
129
124
|
end
|
130
125
|
|
131
126
|
# Performs validation on the passed header hash and returns a string representation of the headers
|
132
127
|
def headers_hash_to_s(headers)
|
133
|
-
headers_str =
|
128
|
+
headers_str = +''
|
134
129
|
headers.each do |key, values|
|
135
|
-
if key.to_s.match(/[\r\n]/)
|
136
|
-
raise Excon::Errors::InvalidHeaderKey
|
130
|
+
if key.to_s.match?(/[\r\n]/)
|
131
|
+
raise Excon::Errors::InvalidHeaderKey, "#{key.to_s.inspect} contains forbidden \"\\r\" or \"\\n\""
|
137
132
|
end
|
133
|
+
|
138
134
|
[values].flatten.each do |value|
|
139
|
-
if value.to_s.match(/[\r\n]/)
|
135
|
+
if value.to_s.match?(/[\r\n]/)
|
140
136
|
# Don't include the potentially sensitive header value (i.e. authorization token) in the message
|
141
|
-
raise Excon::Errors::InvalidHeaderValue
|
137
|
+
raise Excon::Errors::InvalidHeaderValue, "#{key} header value contains forbidden \"\\r\" or \"\\n\""
|
142
138
|
end
|
139
|
+
|
143
140
|
headers_str << key.to_s << ': ' << value.to_s << CR_NL
|
144
141
|
end
|
145
142
|
end
|
data/lib/excon/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: excon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dpiddy (Dan Peterson)
|
@@ -10,24 +10,24 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2025-01-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: activesupport
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: delorean
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
@@ -41,33 +41,33 @@ dependencies:
|
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
44
|
+
name: eventmachine
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: 1.0.4
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: 1.0.4
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
58
|
+
name: json
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 1.
|
63
|
+
version: 1.8.5
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 1.
|
70
|
+
version: 1.8.5
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: open4
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
86
|
+
name: puma
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - ">="
|
@@ -97,7 +97,7 @@ dependencies:
|
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
|
-
name:
|
100
|
+
name: rake
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
103
|
- - ">="
|
@@ -111,21 +111,21 @@ dependencies:
|
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
114
|
+
name: rspec
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
119
|
+
version: 3.5.0
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
124
|
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
126
|
+
version: 3.5.0
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
|
-
name:
|
128
|
+
name: shindo
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
131
|
- - ">="
|
@@ -139,21 +139,21 @@ dependencies:
|
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: '0'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
|
-
name:
|
142
|
+
name: sinatra
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
145
|
- - ">="
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
147
|
+
version: '0'
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: '0'
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
|
-
name:
|
156
|
+
name: sinatra-contrib
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
159
|
- - ">="
|
@@ -229,10 +229,11 @@ homepage: https://github.com/excon/excon
|
|
229
229
|
licenses:
|
230
230
|
- MIT
|
231
231
|
metadata:
|
232
|
-
homepage_uri: https://github.com/excon/excon
|
233
232
|
bug_tracker_uri: https://github.com/excon/excon/issues
|
234
233
|
changelog_uri: https://github.com/excon/excon/blob/master/changelog.txt
|
235
234
|
documentation_uri: https://github.com/excon/excon/blob/master/README.md
|
235
|
+
funding_uri: https://github.com/sponsors/geemus
|
236
|
+
homepage_uri: https://github.com/excon/excon
|
236
237
|
source_code_uri: https://github.com/excon/excon
|
237
238
|
wiki_uri: https://github.com/excon/excon/wiki
|
238
239
|
post_install_message:
|