class Rack::MiniProfiler::ClientSettings

Constants

BACKTRACE_DEFAULT
BACKTRACE_FULL
BACKTRACE_NONE

Attributes

backtrace_level[RW]
disable_profiling[RW]

Public Class Methods

new(env, store, start) click to toggle source
# File lib/mini_profiler/client_settings.rb, line 15
def initialize(env, store, start)
  request = ::Rack::Request.new(env)
  @cookie = request.cookies[COOKIE_NAME]
  @store = store
  @start = start

  @allowed_tokens, @orig_auth_tokens = nil

  if @cookie
    @cookie.split(",").map{|pair| pair.split("=")}.each do |k,v|
      @orig_disable_profiling = @disable_profiling = (v=='t') if k == "dp"
      @backtrace_level = v.to_i if k == "bt"
      @orig_auth_tokens = v.to_s.split("|") if k == "a"
    end
  end

  if !@backtrace_level.nil? && (@backtrace_level == 0 || @backtrace_level > BACKTRACE_NONE)
    @backtrace_level = nil
  end

  @orig_backtrace_level = @backtrace_level

end

Public Instance Methods

backtrace_default?() click to toggle source
# File lib/mini_profiler/client_settings.rb, line 107
def backtrace_default?
  @backtrace_level == BACKTRACE_DEFAULT
end
backtrace_full?() click to toggle source
# File lib/mini_profiler/client_settings.rb, line 103
def backtrace_full?
  @backtrace_level == BACKTRACE_FULL
end
backtrace_none?() click to toggle source
# File lib/mini_profiler/client_settings.rb, line 111
def backtrace_none?
  @backtrace_level == BACKTRACE_NONE
end
disable_profiling?() click to toggle source
# File lib/mini_profiler/client_settings.rb, line 99
def disable_profiling?
  @disable_profiling
end
write!(headers) click to toggle source
# File lib/mini_profiler/client_settings.rb, line 55
def write!(headers)

  tokens_changed = false

  if MiniProfiler.request_authorized? && MiniProfiler.config.authorization_mode == :whitelist
    @allowed_tokens ||= @store.allowed_tokens
    tokens_changed = !@orig_auth_tokens || ((@allowed_tokens - @orig_auth_tokens).length > 0)
  end

  if  @orig_disable_profiling != @disable_profiling ||
      @orig_backtrace_level != @backtrace_level ||
      @cookie.nil? ||
      tokens_changed

    settings = {"p" =>  "t" }
    settings["dp"] = "t"                  if @disable_profiling
    settings["bt"] = @backtrace_level     if @backtrace_level
    settings["a"] = @allowed_tokens.join("|") if @allowed_tokens && MiniProfiler.request_authorized?

    settings_string = settings.map{|k,v| "#{k}=#{v}"}.join(",")
    Rack::Utils.set_cookie_header!(headers, COOKIE_NAME, :value => settings_string, :path => '/')
  end
end