yes-read-api 2.5.0 → 2.6.1

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: ffccff57e5b684bd457f73ee8812236bdfff0adef1179e040600a8f60ae9e477
4
- data.tar.gz: '09c52031f2424362d6437a0f0e3fbb7697a78389990c0da1436f6ac84aa2daf5'
3
+ metadata.gz: 6d8d89dacbcf00c09f36bde2d9144351b451a8017cd82b08f82290b70b40e7b1
4
+ data.tar.gz: 1781e5d7840f993b2755be92da48316eb67cb29d5177091655f8ba0c76f174fe
5
5
  SHA512:
6
- metadata.gz: da42b024bd288d04c96b97e06806008d9365adfc77f5d9d1488951a0988730ce529cf8a0198fa15e6c3d84cdb102677b6d5b6dbd91f7526ce4e07cf2329f902f
7
- data.tar.gz: 78e070d987e4c42bee1f905d364380e4446aa26e6cb879bc1ddec1a989f4ab80e41fee3f02adfeba210c9537ce9399631db87bd5e46fdf5b1f7f58565221407e
6
+ metadata.gz: c5a4cdfa90cb3d9c507ecad60355d2892ca33615e8209cc88dd4fedd06bbc4fdf6b885ceeb137b1aeb6e5962dbb8b281de05b0f6dcef1a2754113431d7b6b257
7
+ data.tar.gz: 785dc57521eaa4a6501c704a8df1fde79688fa1fed8f663933429d0a9e4ab028d471728d33112d237bcb6201a5075d93995f50162348c56ea1f7ac4602ea0da7
@@ -10,6 +10,7 @@ module Yes
10
10
  before_action :validate_advanced_payload, only: :advanced
11
11
  before_action :process_own_filter, only: :call
12
12
 
13
+ RETRY_AFTER_SECONDS = 1
13
14
  IGNORED_FILTER_PARAM = { basic: :filter_definition, advanced: :filters }.freeze
14
15
 
15
16
  # Covers AuthenticationError raised outside #authenticate_with_token, e.g. by consumer
@@ -22,6 +23,12 @@ module Yes
22
23
  with: :read_models_unauthorized_response
23
24
  )
24
25
 
26
+ rescue_from(
27
+ Cerbos::Error::Unavailable,
28
+ Cerbos::Error::DeadlineExceeded,
29
+ with: :authorization_service_unavailable_response
30
+ )
31
+
25
32
  def call
26
33
  persisted_filter = filter(read_model_name).persisted_filter_scope.find_by(id: params[:filter_id]) if params[:filter_id].present?
27
34
 
@@ -144,6 +151,17 @@ module Yes
144
151
  )
145
152
  end
146
153
 
154
+ # Renders a 503 when the authorization service cannot be reached; the client can retry.
155
+ def authorization_service_unavailable_response(error)
156
+ Rails.error.report(error, handled: true, severity: :error)
157
+
158
+ response.set_header('Retry-After', RETRY_AFTER_SECONDS.to_s)
159
+ render(
160
+ json: { title: 'Service Unavailable', detail: 'Authorization service unavailable' }.to_json,
161
+ status: :service_unavailable
162
+ )
163
+ end
164
+
147
165
  def validate_advanced_payload
148
166
  return if params[:filter_definition].blank?
149
167
 
@@ -3,7 +3,7 @@
3
3
  module Yes
4
4
  module Read
5
5
  module Api
6
- VERSION = '2.5.0'
6
+ VERSION = '2.6.1'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yes-read-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nico Ritsche