Sha256: 3a7c47895fde62b3e1be2265fd2cbb5932f5b90b8d1d2f1133f9de108d1ae4bc

Contents?: true

Size: 925 Bytes

Versions: 3

Compression:

Stored size: 925 Bytes

Contents

# frozen_string_literal: true

require 'faraday'
require 'openssl'

module BigSession
  # This middleware will add BigSession header to request_headers of outgoing
  # connections done by Faraday
  class FaradayBigSession < ::Faraday::Middleware
    class << self
      def activate
        ::Faraday::Middleware.register_middleware big_session: ::BigSession::FaradayBigSession
      end
    end

    def initialize(app, header_secret = nil)
      @app = app
      @header_secret = header_secret
    end

    def call(env)
      if SessionId.current
        headers = { ::BigSession::BIG_SESSION_HEADER_NAME => SessionId.current, }

        if @header_secret
          sig = OpenSSL::HMAC.hexdigest('sha256', @header_secret, SessionId.current)
          headers[::BigSession::BIG_SESSION_SIGNATURE_HEADER_NAME] = sig
        end

        env[:request_headers].merge!(headers)
      end
      @app.call(env)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
big_session-0.1.2 lib/big_session/faraday.rb
big_session-0.1.1 lib/big_session/faraday.rb
big_session-0.1.0 lib/big_session/faraday.rb