rack-livereload/lib/rack/livereload/processing_skip_analyzer.rb

50 lines
1.1 KiB
Ruby
Raw Normal View History

2013-04-23 20:28:23 +00:00
require 'rack/livereload'
module Rack
class LiveReload
class ProcessingSkipAnalyzer
BAD_USER_AGENTS = [ %r{MSIE} ]
def self.skip_processing?(result, env, options)
new(result, env, options).skip_processing?
end
def initialize(result, env, options)
@env, @options = env, options
@status, @headers, @body = result
end
def skip_processing?
2013-08-20 20:55:47 +00:00
!html? || chunked? || inline? || ignored? || bad_browser? || !get?
2013-04-23 20:28:23 +00:00
end
def chunked?
@headers['Transfer-Encoding'] == 'chunked'
end
def inline?
@headers['Content-Disposition'] =~ %r{^inline}
end
def ignored?
2013-11-25 23:48:21 +00:00
path = @env['QUERY_STRING'].empty? ? @env['PATH_INFO'] : "#{@env['PATH_INFO']}?#{@env['QUERY_STRING']}"
@options[:ignore] and @options[:ignore].any? { |filter| path[filter] }
2013-04-23 20:28:23 +00:00
end
def bad_browser?
BAD_USER_AGENTS.any? { |pattern| @env['HTTP_USER_AGENT'] =~ pattern }
end
def html?
@headers['Content-Type'] =~ %r{text/html}
2013-04-23 20:28:23 +00:00
end
2013-08-20 20:55:47 +00:00
def get?
@env['REQUEST_METHOD'] == 'GET'
end
2013-04-23 20:28:23 +00:00
end
end
end