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 11
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 22
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 29
def is_header_hash(arg)
  arg.is_a?(Hash) && (arg.symbolize_keys.keys.include?(:authenticated_user) || arg.symbolize_keys.keys.include?(:request_id))
end