class Staccato::Rack::Middleware

middleware

Attributes

last_hit[RW]

page view wrapper

Public Class Methods

new(app, tracking_id, options = {}) click to toggle source
# File lib/staccato/rack.rb, line 17
def initialize(app, tracking_id, options = {})
  @app = app
  @tracking_id = tracking_id
  @logger = options[:logger]
  @default_tracker = Staccato.tracker(tracking_id) do |c|
    c.adapter = FaradayAsyncHttpAdaper.new(@logger) unless tracking_id.nil?
  end
end

Public Instance Methods

call(env) click to toggle source
# File lib/staccato/rack.rb, line 26
def call(env)
  env['staccato.pageview'] = PageView.new.tap { |p| p.logger = @logger }

  @last_hit = nil
  status, headers, body  = @app.call(env)

  if (200..299).include?(status.to_i)
    @last_hit = env['staccato.pageview'].track!(@default_tracker, @tracking_id, ::Rack::Request.new(env))
  end

  # return result
  [status, headers, body]
end