Module: Sinatra::Pebblebed

Defined in:
lib/pebblebed/sinatra.rb

Defined Under Namespace

Modules: Helpers

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
# File 'lib/pebblebed/sinatra.rb', line 130

def self.registered(app)
  app.helpers(Sinatra::Pebblebed::Helpers)
  app.before do
    @_start_time = AbsoluteTime.now
  end
  app.after do
    if (start_time = @_start_time)
      headers 'X-Timing' => ((AbsoluteTime.now - start_time) * 1000).to_i.to_s
    end
  end
end

Instance Method Details

#assign_provisional_identity(opts = {}) ⇒ Object

Adds a before filter to ensure all visitors gets assigned a provisional identity. The options hash takes an optional key “unless” which can be used to specify a lambda/proc that yields true if the request should not trigger a redirect to checkpoint

TODO: Also implement a guard against infinite redirect loops

Usage example:

 assign_provisional_identity :unless => lambda {
  request.path_info == '/ping' || BotDetector.bot?(request.user_agent)
}


163
164
165
166
167
168
169
170
# File 'lib/pebblebed/sinatra.rb', line 163

def assign_provisional_identity(opts={})
  before do
    skip = opts.has_key?(:unless) && instance_exec(&opts[:unless])
    if !skip && current_identity.nil?
      redirect pebbles.checkpoint.service_url("/login/anonymous", :redirect_to => request.path).to_s
    end
  end
end

#declare_pebbles(&block) ⇒ Object



142
143
144
# File 'lib/pebblebed/sinatra.rb', line 142

def declare_pebbles(&block)
  ::Pebblebed.config(&block)
end

#i_am(service_name) ⇒ Object



146
147
148
# File 'lib/pebblebed/sinatra.rb', line 146

def i_am(service_name)
  set :service_name, service_name
end