package com.constellio.app.utils; import javax.servlet.http.HttpServletRequest; import nl.bitwalker.useragentutils.OperatingSystem; import nl.bitwalker.useragentutils.UserAgent; /** * http://stackoverflow.com/questions/1326928/how-can-i-get-client-infomation-such-as-os-and-browser * * @author Vincent */ public class HttpRequestUtils { public static enum OPERATING_SYSTEM { WINDOWS, MAC_OS_X, LINUX, ANDROID, IOS, UNKNOWN } public static enum BROWSER { IE, CHROME, FIREFOX, SAFARI, OPERA, UNKNOWN } public static OPERATING_SYSTEM getOperatingSystem(HttpServletRequest request) { OPERATING_SYSTEM os; UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); OperatingSystem userAgentOS = userAgent.getOperatingSystem(); switch (userAgentOS.getGroup()) { case WINDOWS: os = OPERATING_SYSTEM.WINDOWS; break; case MAC_OS_X: os = OPERATING_SYSTEM.MAC_OS_X; break; case LINUX: os = OPERATING_SYSTEM.LINUX; break; case ANDROID: os = OPERATING_SYSTEM.ANDROID; break; case IOS: os = OPERATING_SYSTEM.IOS; break; default: os = OPERATING_SYSTEM.UNKNOWN; break; } return os; } public static boolean isWindows(HttpServletRequest request) { return getOperatingSystem(request).equals(OPERATING_SYSTEM.WINDOWS); } public static boolean isMacOsX(HttpServletRequest request) { return getOperatingSystem(request).equals(OPERATING_SYSTEM.MAC_OS_X); } public static boolean isLocalhost(HttpServletRequest request) { String address = request.getRemoteAddr(); return "localhost".equals(address) || "127.0.0.1".equals(address); } public static String getBaseURL(HttpServletRequest request, boolean includeContextPath) { StringBuffer baseURL = new StringBuffer(); String scheme = request.getScheme(); String serverName = request.getServerName(); int serverPort = request.getServerPort(); String contextPath = request.getContextPath(); baseURL.append(scheme); baseURL.append("://"); baseURL.append(serverName); if (serverPort != 80 && serverPort != 443) { baseURL.append(":" + serverPort); } if (includeContextPath && !"/".equals(contextPath)) { baseURL.append(contextPath); } return baseURL.toString(); } }