Class: GovukSidekiq::APIHeaders::ClientMiddleware
- Inherits:
-
Object
- Object
- GovukSidekiq::APIHeaders::ClientMiddleware
- Defined in:
- lib/govuk_sidekiq/api_headers.rb
Overview
Client-side middleware runs before the pushing of the job to Redis and allows you to modify/stop the job before it gets pushed.
github.com/mperham/sidekiq/wiki/Middleware#client-side-middleware
Instance Method Summary collapse
- #call(worker_class, job, queue, redis_pool) ⇒ Object
- #header_arguments ⇒ Object
- #needs_headers(last_arg) ⇒ Object
Instance Method Details
#call(worker_class, job, queue, redis_pool) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/govuk_sidekiq/api_headers.rb', line 10 def call(worker_class, job, queue, redis_pool) last_arg = job["args"].last if needs_headers(last_arg) job["args"] << header_arguments end yield end |
#header_arguments ⇒ Object
20 21 22 23 24 25 |
# File 'lib/govuk_sidekiq/api_headers.rb', line 20 def header_arguments { authenticated_user: GdsApi::GovukHeaders.headers[:x_govuk_authenticated_user], request_id: GdsApi::GovukHeaders.headers[:govuk_request_id], } end |
#needs_headers(last_arg) ⇒ Object
27 28 29 30 |
# File 'lib/govuk_sidekiq/api_headers.rb', line 27 def needs_headers(last_arg) has_args = last_arg.is_a?(Hash) && last_arg.symbolize_keys.keys.include?(:authenticated_user) && last_arg.symbolize_keys.keys.include?(:request_id) !has_args && header_arguments[:authenticated_user].present? && header_arguments[:request_id].present? end |