1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.helper;
17
18 import org.lastaflute.web.util.LaRequestUtil;
19
20 public class UserAgentHelper {
21 protected static final String USER_AGENT = "user-agent";
22
23 protected static final String USER_AGENT_TYPE = "ViewHelper.UserAgent";
24
25 public UserAgentType getUserAgentType() {
26 return LaRequestUtil.getOptionalRequest().map(request -> {
27 UserAgentType uaType = (UserAgentType) request.getAttribute(USER_AGENT_TYPE);
28 if (uaType == null) {
29 final String userAgent = request.getHeader(USER_AGENT);
30 if (userAgent != null) {
31 if (userAgent.indexOf("MSIE") >= 0 || userAgent.indexOf("Trident") >= 0) {
32 uaType = UserAgentType.IE;
33 } else if (userAgent.indexOf("Firefox") >= 0) {
34 uaType = UserAgentType.FIREFOX;
35 } else if (userAgent.indexOf("Chrome") >= 0) {
36 uaType = UserAgentType.CHROME;
37 } else if (userAgent.indexOf("Safari") >= 0) {
38 uaType = UserAgentType.SAFARI;
39 } else if (userAgent.indexOf("Opera") >= 0) {
40 uaType = UserAgentType.OPERA;
41 }
42 }
43 if (uaType == null) {
44 uaType = UserAgentType.OTHER;
45 }
46 request.setAttribute(USER_AGENT_TYPE, uaType);
47 }
48 return uaType;
49 }).orElse(UserAgentType.OTHER);
50 }
51
52 public enum UserAgentType {
53 IE, FIREFOX, CHROME, SAFARI, OPERA, OTHER;
54 }
55
56 }