forked from carezone/mobylette
/
respond_to_mobile_requests.rb
48 lines (37 loc) · 1.44 KB
/
respond_to_mobile_requests.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
module Mobylette
module Controllers
module RespondToMobileRequests
extend ActiveSupport::Concern
module ClassMethods
def respond_to_mobile_requests
return if self.included_modules.include?(Mobylette::Controllers::RespondToMobileRequestsMethods)
self.send(:include, Mobylette::Controllers::RespondToMobileRequestsMethods)
end
end
end
module RespondToMobileRequestsMethods
extend ActiveSupport::Concern
included do
before_filter :handle_mobile
helper_method :is_mobile_request?
MOBILE_USER_AGENTS = 'palm|blackberry|nokia|phone|midp|mobi|symbian|chtml|ericsson|minimo|' +
'audiovox|motorola|samsung|telit|upg1|windows ce|ucweb|astel|plucker|' +
'x320|x240|j2me|sgh|portable|sprint|docomo|kddi|softbank|android|mmp|' +
'pdxgw|netfront|xiino|vodafone|portalmmm|sagem|mot-|sie-|ipod|up\\.b|' +
'webos|amoi|novarra|cdm|alcatel|pocket|ipad|iphone|mobileexplorer|' +
'mobile'
end
module ClassMethods
end
module InstanceMethods
private
def handle_mobile
request.format = :mobile if is_mobile_request?
end
def is_mobile_request?
request.user_agent.to_s.downcase =~ /#{self.class.MOBILE_USER_AGENTS}/
end
end
end
end
end