excon 1.2.2 → 1.2.4
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.
- checksums.yaml +4 -4
- data/data/cacert.pem +2 -87
- data/excon.gemspec +1 -0
- data/lib/excon/connection.rb +3 -3
- data/lib/excon/constants.rb +1 -0
- data/lib/excon/error.rb +2 -2
- data/lib/excon/middlewares/redirect_follower.rb +2 -2
- data/lib/excon/socket.rb +1 -1
- data/lib/excon/ssl_socket.rb +2 -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/unix_socket.rb +1 -1
- data/lib/excon/utils.rb +30 -33
- data/lib/excon/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 549d655a9aa947cf069caa926be4af5f1f4195ffde3e074f13186edc97338f7b
|
4
|
+
data.tar.gz: e1ad803cb67388ee741e690b6af6d79818875962cbcad1573c811c30d8ff6fef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72f72fe4fb083d44948853b48777d37e1bce9f974f3f8e19aa080e6480dde462167e14542fc70b19eb535dc2e67f2c49a87b77998cccb10efe8a35d6ae2c67f4
|
7
|
+
data.tar.gz: a2e886809a5504a567ec1ce9f56058aaed9bdc28875c6ccafdb0a1373f8028c4e443e3627958f38f13caf93f67e05eafc0b135727e2a6169a6ae99d9bd0d8adf
|
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-----
|
@@ -3170,36 +3115,6 @@ AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8
|
|
3170
3115
|
rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
|
3171
3116
|
-----END CERTIFICATE-----
|
3172
3117
|
|
3173
|
-
Security Communication RootCA3
|
3174
|
-
==============================
|
3175
|
-
-----BEGIN CERTIFICATE-----
|
3176
|
-
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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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
-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
-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
-
CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB
|
3191
|
-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
-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
-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
-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
-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
-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
-
+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn
|
3198
|
-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
-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
-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
|
3201
|
-
-----END CERTIFICATE-----
|
3202
|
-
|
3203
3118
|
Security Communication ECC RootCA1
|
3204
3119
|
==================================
|
3205
3120
|
-----BEGIN CERTIFICATE-----
|
data/excon.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_development_dependency('open4')
|
31
31
|
s.add_development_dependency('puma')
|
32
32
|
s.add_development_dependency('rake')
|
33
|
+
s.add_development_dependency('rdoc')
|
33
34
|
s.add_development_dependency('rspec', '>= 3.5.0')
|
34
35
|
s.add_development_dependency('shindo')
|
35
36
|
s.add_development_dependency('sinatra')
|
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/constants.rb
CHANGED
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/socket.rb
CHANGED
data/lib/excon/ssl_socket.rb
CHANGED
@@ -26,6 +26,7 @@ module Excon
|
|
26
26
|
if defined?(OpenSSL::SSL::OP_NO_COMPRESSION)
|
27
27
|
ssl_context_options |= OpenSSL::SSL::OP_NO_COMPRESSION
|
28
28
|
end
|
29
|
+
ssl_context_options |= OpenSSL::SSL::OP_IGNORE_UNEXPECTED_EOF if @data[:ignore_unexpected_eof]
|
29
30
|
ssl_context.options = ssl_context_options
|
30
31
|
|
31
32
|
ssl_context.ciphers = @data[:ciphers]
|
@@ -63,7 +64,7 @@ module Excon
|
|
63
64
|
unless ca_file || ca_path || cert_store
|
64
65
|
# workaround issue #257 (JRUBY-6970)
|
65
66
|
ca_file = DEFAULT_CA_FILE
|
66
|
-
ca_file = ca_file.gsub(/^jar:/, '') if ca_file
|
67
|
+
ca_file = ca_file.gsub(/^jar:/, '') if ca_file.match?(/^jar:file:\//)
|
67
68
|
|
68
69
|
begin
|
69
70
|
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/unix_socket.rb
CHANGED
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dpiddy (Dan Peterson)
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2025-02-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -110,6 +110,20 @@ dependencies:
|
|
110
110
|
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: rdoc
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
113
127
|
- !ruby/object:Gem::Dependency
|
114
128
|
name: rspec
|
115
129
|
requirement: !ruby/object:Gem::Requirement
|