Created
February 4, 2013 09:08
-
-
Save phocke/4705763 to your computer and use it in GitHub Desktop.
refactoring old code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Before | |
def redirect_blocked_browsers | |
if params['controller'] == 'page' && params['action'] == 'browser' | |
return true | |
end | |
user_agent = UserAgent.parse(request.env['HTTP_USER_AGENT']) | |
# Cater to CriOS until we find a better solution | |
browser, version = user_agent.browser, user_agent.version | |
if request.env['HTTP_USER_AGENT'] =~ /CriOS\/(\d+\.?\d+?)/ | |
# Chrome/iOS | |
browser = 'Chrome' | |
version = UserAgent::Version.new($1) | |
end | |
version = UserAgent::Version.new("1.0") if (version.nil?) | |
if browser == 'Internet Explorer' && version.to_s.to_f < 8.0 | |
render(template: 'page/browser_update.html.erb', layout: 'general_blank') | |
return false | |
elsif browser == 'Firefox' && version.to_s.to_f < 4.0 | |
render(template: 'page/browser_update.html.erb', layout: 'general_blank') | |
return false | |
elsif browser == 'Safari' && version.to_s.to_f < 4.0 | |
render(template: 'page/browser_update.html.erb', layout: 'general_blank') | |
return false | |
elsif browser == 'Chrome' && version.to_s.to_f < 7.0 | |
render(template: 'page/browser_update.html.erb', layout: 'general_blank') | |
return false | |
end | |
return true | |
end | |
#After | |
def redirect_blocked_browsers | |
user_agent = UserAgent.parse(request.env['HTTP_USER_AGENT']) | |
browser = user_agent.browser | |
version = user_agent.version.to_s.split(".").first.to_i | |
if is_vintage_browser?(browser, version) | |
render(template: 'page/browser_update.html.erb', | |
layout: 'general_blank') and return | |
end | |
return true | |
end | |
def is_vintage_browser?(name, client_version) | |
vintage_version = AppConfig.blocked_browsers[name.downcase] | |
return false unless vintage_version #it means it is some niche browser | |
client_version < vintage_version | |
end | |
#After after | |
before_filter :redirect_vintage_browsers, if: :is_vintage_browser? | |
def redirect_vintage_browsers | |
render 'page/browser_update' | |
end | |
def is_vintage_browser? | |
browser = user_agent.browser | |
version = user_agent.version.to_s.split(".").first.to_i | |
vintage_version = AppConfig.blocked_browsers[browser.downcase] | |
version < vintage_version.to_i # to_i used once more just in case it's nil | |
end | |
def user_agent #new method created as I'll use it elsewere | |
@user_agent ||= UserAgent.parse(request.env['HTTP_USER_AGENT']) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Arrrrticulated well, that one is!