class Sidekiq::Crypt::ClientMiddleware
Attributes
configuration[R]
encrypted_keys[R]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 9 def initialize(opts = {}) @configuration = opts[:configuration] @encrypted_keys = Set.new end
Public Instance Methods
call(worker_class, job, _queue, _redis_pool) { || ... }
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 14 def call(worker_class, job, _queue, _redis_pool) if encrypted_worker?(worker_class, job) @iv = Cipher.random_iv traverser.traverse!(job['args'], encryption_proc) write_encryption_header_to_redis(job['jid'], encrypted_keys) end yield end
Private Instance Methods
encrypted_worker?(worker_class, job)
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 28 def encrypted_worker?(worker_class, job) @worker_klass = worker_class(worker_class, job) @worker_klass && @worker_klass.ancestors.include?(Sidekiq::Crypt::Worker) end
encryption_proc()
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 50 def encryption_proc proc do |key, param| encrypted_keys << key Cipher.encrypt(param, @iv) end end
traverser()
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 33 def traverser Traverser.new(@worker_klass.sidekiq_crypt_worker_filters || configuration.filters) end
worker_class(worker_class, job)
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 57 def worker_class(worker_class, job) klass = begin job['args'][0]['job_class'] || worker_class rescue StandardError worker_class end if klass.is_a?(Class) klass elsif Module.const_defined?(klass) Module.const_get(klass) end end
write_encryption_header_to_redis(job_id, encrypted_keys)
click to toggle source
# File lib/sidekiq-crypt/client_middleware.rb, line 37 def write_encryption_header_to_redis(job_id, encrypted_keys) Sidekiq.redis do |conn| conn.set( "sidekiq-crpyt-header:#{job_id}", JSON.generate( nonce: Base64.encode64(@iv), encrypted_keys: encrypted_keys.to_a, key_version: Sidekiq::Crypt.configuration.current_key_version ) ) end end