class BigSession::FaradayBigSession

This middleware will add BigSession header to request_headers of outgoing connections done by Faraday

Public Class Methods

activate() click to toggle source
# File lib/big_session/faraday.rb, line 11
def activate
  ::Faraday::Middleware.register_middleware big_session: ::BigSession::FaradayBigSession
end
new(app, header_secret = nil) click to toggle source
# File lib/big_session/faraday.rb, line 16
def initialize(app, header_secret = nil)
  @app = app
  @header_secret = header_secret
end

Public Instance Methods

call(env) click to toggle source
# File lib/big_session/faraday.rb, line 21
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