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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 738c867acaec7b89bbee08c77558f9c38edf9c0531b5c3d003981418e12a1553
4
- data.tar.gz: 87357f9d74d762d2e48c1af4341865588e9438fd989a91e8c83c9ec85e34cddb
3
+ metadata.gz: 9f78ec13c3b7cc67758d4f7f61d1c7ea4c53fbc7deaba119f2b4dac03f9db892
4
+ data.tar.gz: d52117b0d59efeb242703048d0ced7401a23aefe415c92a4e9698d3ca6ae95ec
5
5
  SHA512:
6
- metadata.gz: a33ee1422f54944d24b554a5a6c6dccecbbabcf92ceecc3ecf5fada7da39aa2b3e4edbea1d55c1acc17642c0c83d34ee2e0effaff5be6a65d24b02e2694c8ff9
7
- data.tar.gz: a5ce6c300dc830e85e34e8551f07236135f33964e189cc50408bc1b1b68e0d6fa3ecadaa13daa8aa55f350b26ebb8425affb6392610d12911cbe89053e2f0620
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 Sep 24 03:12:04 2024 GMT
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: 36105b01631f9fc03b1eca779b44a30a1a5890b9bf8dc07ccb001a07301e01cf
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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
- 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
- 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
- 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
- AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3151
- 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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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
- 3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf
3159
- 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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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
- 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
- +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
- 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
- dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm
3170
- 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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 = "speed, persistence, http(s)"
8
- s.description = "EXtended http(s) CONnections"
9
- s.authors = ["dpiddy (Dan Peterson)", "geemus (Wesley Beary)", "nextmat (Matt Sanders)"]
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 = ["--charset=UTF-8"]
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
- "CONTRIBUTING.md",
17
- "CONTRIBUTORS.md",
18
- "LICENSE.md",
19
- "README.md",
20
- "excon.gemspec"
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
- 'homepage_uri' => 'https://github.com/excon/excon',
39
- 'bug_tracker_uri' => 'https://github.com/excon/excon/issues',
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
- 'source_code_uri' => 'https://github.com/excon/excon',
43
- 'wiki_uri' => 'https://github.com/excon/excon/wiki'
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
@@ -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(String.new("0#{CR_NL}#{CR_NL}"))
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.merge!(:persistent => @data[:persistent])
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 =~ /certificate verify failed/
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 =~ /Error\Z/
220
- class_name = klass.to_s + 'Error' if class_name =~ legacy_re
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.merge!(:user => Utils.unescape_uri(uri.user)) if uri.user
71
- params.merge!(:password => Utils.unescape_uri(uri.password)) if uri.password
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!({
@@ -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 =~ /^jar: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 =~ /Use Ctrl-C to stop/
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 =~ /worker\=0 ready/
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 =~ /HTTPServer#start/
13
+ until line.include?('HTTPServer#start')
14
14
  line = error.gets
15
15
  raise process_stderr if line.nil?
16
16
  process_stderr << line
@@ -73,7 +73,7 @@ module Excon
73
73
  while (line = lines.shift)
74
74
  case line
75
75
  when /(ERROR|Error)/
76
- unless line =~ /(null cert chain|did not return a certificate|SSL_read:: internal error)/
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
- extend self
5
+ module_function
5
6
 
6
- CONTROL = (0x0..0x1f).map {|c| c.chr }.join + "\x7f"
7
+ CONTROL = "#{(0x0..0x1f).map(&:chr).join}\u007F"
7
8
  DELIMS = '<>#%"'
8
9
  UNWISE = '{}|\\^[]`'
9
- NONASCII = (0x80..0xff).map {|c| c.chr }.join
10
- UNESCAPED = /([#{ Regexp.escape(CONTROL + ' ' + DELIMS + UNWISE + NONASCII) }])/
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
- raise ArgumentError, '`datum` must be given unless called on a Connection'
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.has_key?(:headers)
40
- if datum[:headers].has_key?('Authorization') || datum[:headers].has_key?('Proxy-Authorization')
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].has_key?('Authorization')
44
- datum[:headers]['Authorization'] = REDACTED
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.has_key?(:password)
51
- datum[:password] = REDACTED
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 = String.new
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(%r'\G((?:"(?:\\.|[^"])+?"|[^",])+)
106
- (?:,\s*|\Z)'xn).flatten
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) { "%%%02X" % $1[0].ord }
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) { $1.hex.chr }
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.gsub!(/\+/, ' ')
128
- str.gsub(ESCAPED) { $1.hex.chr }
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 = String.new
128
+ headers_str = +''
134
129
  headers.each do |key, values|
135
- if key.to_s.match(/[\r\n]/)
136
- raise Excon::Errors::InvalidHeaderKey.new(key.to_s.inspect + ' contains forbidden "\r" or "\n"')
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.new(key.to_s + ' header value contains forbidden "\r" or "\n"')
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Excon
4
- VERSION = '1.2.1'
4
+ VERSION = '1.2.3'
5
5
  end
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.1
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: 2024-11-14 00:00:00.000000000 Z
13
+ date: 2025-01-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rspec
16
+ name: activesupport
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: 3.5.0
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: 3.5.0
28
+ version: '0'
29
29
  - !ruby/object:Gem::Dependency
30
- name: activesupport
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: delorean
44
+ name: eventmachine
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '0'
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: '0'
56
+ version: 1.0.4
57
57
  - !ruby/object:Gem::Dependency
58
- name: eventmachine
58
+ name: json
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 1.0.4
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.0.4
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: rake
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: shindo
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: sinatra
114
+ name: rspec
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: '0'
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: '0'
126
+ version: 3.5.0
127
127
  - !ruby/object:Gem::Dependency
128
- name: sinatra-contrib
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: json
142
+ name: sinatra
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - ">="
146
146
  - !ruby/object:Gem::Version
147
- version: 1.8.5
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: 1.8.5
154
+ version: '0'
155
155
  - !ruby/object:Gem::Dependency
156
- name: puma
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: