class GovukSidekiq::APIHeaders::ClientMiddleware
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
Public Instance Methods
call(_worker_class, job, _queue, _redis_pool) { || ... }
click to toggle source
# File lib/govuk_sidekiq/api_headers.rb, line 10 def call(_worker_class, job, _queue, _redis_pool) last_arg = job["args"].last if is_header_hash(last_arg) job["args"].pop job["args"] << header_arguments.merge(last_arg) else job["args"] << header_arguments end yield end
header_arguments()
click to toggle source
# File lib/govuk_sidekiq/api_headers.rb, line 23 def header_arguments { authenticated_user: GdsApi::GovukHeaders.headers[:x_govuk_authenticated_user], request_id: GdsApi::GovukHeaders.headers[:govuk_request_id], } end
is_header_hash(arg)
click to toggle source
# File lib/govuk_sidekiq/api_headers.rb, line 30 def is_header_hash(arg) arg.is_a?(Hash) && (arg.symbolize_keys.keys.include?(:authenticated_user) || arg.symbolize_keys.keys.include?(:request_id)) end