keyless 2.2.0 → 2.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 974bd00d2393477067c07dfb2f8a6ee59745df9ef4de0ccaa6e7388f1a0f24a8
4
- data.tar.gz: 6f96ec9de89c6939b07094c127db3a7f2250c981be9c0b5f0e1bdf0b9dbf524b
3
+ metadata.gz: d12f8064aeb243a8080877c6435e950495041bde541bf333b716548c9ff7d61b
4
+ data.tar.gz: 674b825647e89d2079e5fb7a1eabe670e91151a47ea577275e52c5fd9d91cace
5
5
  SHA512:
6
- metadata.gz: e6faeb0a6f8e53dc18ec6f2dc87ec2109cb674ff35c3b681dde304cf1c84f7d82bb4f3d84951ac9f41b6711eaa22d196ed65f268eecea2b0f4e0027411e56b70
7
- data.tar.gz: 893a2cb74c8db289a35b80861d1885ef4d37a6b662a3cf493aea6ad45bb56811b2b7c03be0ea1cc1eb5d774db48805ab194ec1d81de14667142bd7cb94850d8f
6
+ metadata.gz: faa90d0c79630233da270b0304feda76d5089d19428bc8229a5e2869fc6a405756a5b9fe009fbd7b8ffcf7e52c3cee69a3d6036eae2d9a53addcb49d3978235f
7
+ data.tar.gz: 45cd81e55400160dea5ddc98b10b629436f395b5463c1b37aa9f15cccc1ea647821dd1811f19aaab643205d012cbf3abe07eef17bfd94952a32d45ddfe46674f
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  * TODO: Replace this bullet point with an actual description of a change.
4
4
 
5
+ ### 2.3.0 (16 December 2025)
6
+
7
+ * Switched from `httparty` to the `http` gem and added support for retries on
8
+ the RSA remote fetching (5 times by default) ([#18](https://github.com/hausgold/keyless/pull/18))
9
+
5
10
  ### 2.2.0 (2 December 2025)
6
11
 
7
12
  * Loosend up the version requirement for the `jwt` gem to `>= 2.6`, so people
data/keyless.gemspec CHANGED
@@ -36,9 +36,10 @@ Gem::Specification.new do |spec|
36
36
  spec.required_ruby_version = '>= 3.2'
37
37
 
38
38
  spec.add_dependency 'activesupport', '>= 7.1'
39
- spec.add_dependency 'httparty', '>= 0.21'
39
+ spec.add_dependency 'http', '~> 5.3'
40
40
  spec.add_dependency 'jwt', '>= 2.6'
41
41
  spec.add_dependency 'mutex_m', '>= 0.3'
42
42
  spec.add_dependency 'recursive-open-struct', '~> 2.0'
43
+ spec.add_dependency 'retries', '>= 0.0.5'
43
44
  spec.add_dependency 'zeitwerk', '~> 2.6'
44
45
  end
@@ -64,6 +64,10 @@ module Keyless
64
64
  # here.
65
65
  config_accessor(:rsa_public_key_url) { nil }
66
66
 
67
+ # When the remote (HTTP/HTTPS) fetching failed, how many times to retry the
68
+ # operation.
69
+ config_accessor(:rsa_public_key_fetch_retries) { 5 }
70
+
67
71
  # You can preconfigure the {RsaPublickey} class to enable/disable
68
72
  # caching. For a remote public key location it is handy to cache the
69
73
  # result for some time to keep the traffic low to this resource server.
@@ -59,13 +59,20 @@ module Keyless
59
59
  def fetch_encoded_key
60
60
  raise ArgumentError, 'No URL for RsaPublicKey configured' unless url
61
61
 
62
- if remote?
63
- res = HTTParty.get(url)
64
- raise FetchError, res.inspect unless (200..299).cover? res.code
62
+ remote? ? fetch_encoded_key_via_http : File.read(url)
63
+ end
64
+
65
+ # Fetch the encoded (DER, or PEM) public key from a remote location via
66
+ # HTTP/HTTPS.
67
+ #
68
+ # @return [String] The encoded public key
69
+ def fetch_encoded_key_via_http
70
+ conf = ::Keyless.configuration
71
+ with_retries(max_tries: conf.rsa_public_key_fetch_retries) do
72
+ res = HTTP.get(url)
73
+ raise FetchError, res.inspect unless res.status.success?
65
74
 
66
- res.body
67
- else
68
- File.read(url)
75
+ res.to_s
69
76
  end
70
77
  end
71
78
 
@@ -3,7 +3,7 @@
3
3
  # The gem version details.
4
4
  module Keyless
5
5
  # The version of the +keyless+ gem
6
- VERSION = '2.2.0'
6
+ VERSION = '2.3.0'
7
7
 
8
8
  class << self
9
9
  # Returns the version of gem as a string.
data/lib/keyless.rb CHANGED
@@ -14,7 +14,8 @@ require 'jwt'
14
14
  require 'recursive-open-struct'
15
15
  require 'singleton'
16
16
  require 'openssl'
17
- require 'httparty'
17
+ require 'http'
18
+ require 'retries'
18
19
 
19
20
  # The JWT authentication concern.
20
21
  module Keyless
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keyless
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Mayer
@@ -26,19 +26,19 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '7.1'
28
28
  - !ruby/object:Gem::Dependency
29
- name: httparty
29
+ name: http
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0.21'
34
+ version: '5.3'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0.21'
41
+ version: '5.3'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: jwt
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -81,6 +81,20 @@ dependencies:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '2.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: retries
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 0.0.5
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 0.0.5
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: zeitwerk
86
100
  requirement: !ruby/object:Gem::Requirement