From 31398c727fd60cdd8827888211793aaf1558f8f2 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 5 Jul 2021 10:47:23 +0800 Subject: [PATCH] fix code --- .../java/cn/hutool/http/useragent/Engine.java | 24 +++++++--- .../http/useragent/UserAgentParser.java | 44 +++++++------------ .../hutool/http/useragent/UserAgentUtil.java | 4 +- 3 files changed, 38 insertions(+), 34 deletions(-) diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/Engine.java b/hutool-http/src/main/java/cn/hutool/http/useragent/Engine.java index 0626cd7f8..ab135018b 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/Engine.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/Engine.java @@ -1,17 +1,19 @@ package cn.hutool.http.useragent; -import java.util.List; - import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ReUtil; + +import java.util.List; +import java.util.regex.Pattern; /** * 引擎对象 - * + * * @author looly * @since 4.2.1 */ public class Engine extends UserAgentInfo { - + /** 未知 */ public static final Engine Unknown = new Engine(NameUnknown, null); @@ -32,7 +34,7 @@ public class Engine extends UserAgentInfo { /** * 构造 - * + * * @param name 引擎名称 * @param regex 关键字或表达式 */ @@ -40,4 +42,16 @@ public class Engine extends UserAgentInfo { super(name, regex); } + /** + * 获取引擎版本 + * + * @param userAgentString User-Agent字符串 + * @return 版本 + * @since 5.7.4 + */ + public String getVersion(String userAgentString) { + final String regexp = getName() + "[/\\- ]([\\d\\w.\\-]+)"; + final Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE); + return ReUtil.getGroup1(pattern, userAgentString); + } } diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentParser.java b/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentParser.java index a7cde00e1..d4e10db4d 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentParser.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentParser.java @@ -1,13 +1,10 @@ package cn.hutool.http.useragent; -import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; -import java.util.regex.Pattern; - /** * User-Agent解析器 - * + * * @author looly * @since 4.2.1 */ @@ -15,7 +12,7 @@ public class UserAgentParser { /** * 解析User-Agent - * + * * @param userAgentString User-Agent字符串 * @return {@link UserAgent} */ @@ -24,28 +21,34 @@ public class UserAgentParser { return null; } final UserAgent userAgent = new UserAgent(); - + + // 浏览器 final Browser browser = parseBrowser(userAgentString); userAgent.setBrowser(parseBrowser(userAgentString)); userAgent.setVersion(browser.getVersion(userAgentString)); - + + // 浏览器引擎 final Engine engine = parseEngine(userAgentString); userAgent.setEngine(engine); if (false == engine.isUnknown()) { - userAgent.setEngineVersion(parseEngineVersion(engine, userAgentString)); + userAgent.setEngineVersion(engine.getVersion(userAgentString)); } + + // 操作系统 userAgent.setOs(parseOS(userAgentString)); + + // 平台 final Platform platform = parsePlatform(userAgentString); userAgent.setPlatform(platform); userAgent.setMobile(platform.isMobile() || browser.isMobile()); - + return userAgent; } /** * 解析浏览器类型 - * + * * @param userAgentString User-Agent字符串 * @return 浏览器类型 */ @@ -57,10 +60,10 @@ public class UserAgentParser { } return Browser.Unknown; } - + /** * 解析引擎类型 - * + * * @param userAgentString User-Agent字符串 * @return 引擎类型 */ @@ -73,22 +76,9 @@ public class UserAgentParser { return Engine.Unknown; } - /** - * 解析引擎版本 - * - * @param engine 引擎 - * @param userAgentString User-Agent字符串 - * @return 引擎版本 - */ - private static String parseEngineVersion(Engine engine, String userAgentString) { - final String regexp = engine.getName() + "[/\\- ]([\\d\\w.\\-]+)"; - final Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE); - return ReUtil.getGroup1(pattern, userAgentString); - } - /** * 解析系统类型 - * + * * @param userAgentString User-Agent字符串 * @return 系统类型 */ @@ -103,7 +93,7 @@ public class UserAgentParser { /** * 解析平台类型 - * + * * @param userAgentString User-Agent字符串 * @return 平台类型 */ diff --git a/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentUtil.java b/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentUtil.java index e65692cde..de4153478 100644 --- a/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentUtil.java +++ b/hutool-http/src/main/java/cn/hutool/http/useragent/UserAgentUtil.java @@ -2,7 +2,7 @@ package cn.hutool.http.useragent; /** * User-Agent工具类 - * + * * @author looly * */ @@ -10,7 +10,7 @@ public class UserAgentUtil { /** * 解析User-Agent - * + * * @param userAgentString User-Agent字符串 * @return {@link UserAgent} */