Class: LazyMobileTester::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/lazy_mobile_tester/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



3
4
5
# File 'lib/lazy_mobile_tester/middleware.rb', line 3

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



7
8
9
# File 'lib/lazy_mobile_tester/middleware.rb', line 7

def call(env)
  dup.call!(env)
end

#call!(env) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/lazy_mobile_tester/middleware.rb', line 11

def call!(env)
  if (env["REQUEST_URI"].include?("/_lazy") || env["REQUEST_URI"].include?("?_lazy")) && env['HTTP_ACCEPT'].to_s.starts_with?("text/html")
    @url = env["REQUEST_PATH"].to_s.gsub(/\/\?_lazy=?1?/, "").presence || "/"
    @uri = env["REQUEST_URI"].to_s.gsub(/\/\?_lazy=?1?/, "").presence || "/"
    @uri = @uri.gsub(/_lazy/, "")
    @uri = "/#{@uri}" unless @uri.starts_with?("/")

    env["REQUEST_PATH"] = @url
    env["REQUEST_URI"]  = @uri

    [200, [], [ERB.new(template).result(binding)]]
  else
    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  end
end

#templateObject



28
29
30
# File 'lib/lazy_mobile_tester/middleware.rb', line 28

def template
  File.read("#{File.expand_path(File.dirname(__FILE__))}/../../app/views/lazy_mobile_tester/_toolbar.html.erb")
end