Sha256: 6c2b11bd68818e5584701811532ac31d9f5afac08ff8b9f529a0e6b017d7f44f

Contents?: true

Size: 894 Bytes

Versions: 3

Compression:

Stored size: 894 Bytes

Contents

require 'rack'
require 'sidekiq/hierarchy/http'

module Sidekiq
  module Hierarchy
    module Rack
      class Middleware
        # transform from http header to rack names
        JOB_HEADER_KEY = "HTTP_#{Sidekiq::Hierarchy::Http::JOB_HEADER.upcase.gsub('-','_')}".freeze
        WORKFLOW_HEADER_KEY = "HTTP_#{Sidekiq::Hierarchy::Http::WORKFLOW_HEADER.upcase.gsub('-','_')}".freeze

        def initialize(app)
          @app = app
        end

        def call(env)
          if env[WORKFLOW_HEADER_KEY] && env[JOB_HEADER_KEY]
            Sidekiq::Hierarchy.current_job = Job.find(env[JOB_HEADER_KEY])
            Sidekiq::Hierarchy.current_workflow = Workflow.find_by_jid(env[WORKFLOW_HEADER_KEY])
          end
          @app.call(env)
        ensure
          Sidekiq::Hierarchy.current_workflow = nil
          Sidekiq::Hierarchy.current_job = nil
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sidekiq-hierarchy-2.1.0 lib/sidekiq/hierarchy/rack/middleware.rb
sidekiq-hierarchy-2.0.1 lib/sidekiq/hierarchy/rack/middleware.rb
sidekiq-hierarchy-2.0.0 lib/sidekiq/hierarchy/rack/middleware.rb