support edge

This commit is contained in:
Looly
2020-03-24 17:09:04 +08:00
parent df739bae6a
commit e344c4ef54
8 changed files with 166 additions and 52 deletions

View File

@@ -1,11 +1,11 @@
package cn.hutool.http.useragent;
import java.util.List;
import java.util.regex.Pattern;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReUtil;
import java.util.List;
import java.util.regex.Pattern;
/**
* 浏览器对象
*
@@ -23,7 +23,7 @@ public class Browser extends UserAgentInfo {
* 支持的浏览器类型
*/
public static final List<Browser> browers = CollUtil.newArrayList(//
new Browser("MSEdge", "Edge", "edge\\/([\\d\\w\\.\\-]+)"), //
new Browser("MSEdge", "Edge|Edg", "edge|Edg\\/([\\d\\w\\.\\-]+)"), //
new Browser("Chrome", "chrome", "chrome\\/([\\d\\w\\.\\-]+)"), //
new Browser("Firefox", "firefox", Other_Version), //
new Browser("IEMobile", "iemobile", Other_Version), //

View File

@@ -1,9 +1,9 @@
package cn.hutool.http.useragent;
import java.util.regex.Pattern;
import cn.hutool.core.util.ReUtil;
import java.util.regex.Pattern;
/**
* User-Agent解析器
*
@@ -46,9 +46,9 @@ public class UserAgentParser {
* @return 浏览器类型
*/
private static Browser parseBrowser(String userAgentString) {
for (Browser brower : Browser.browers) {
if (brower.isMatch(userAgentString)) {
return brower;
for (Browser browser : Browser.browers) {
if (browser.isMatch(userAgentString)) {
return browser;
}
}
return Browser.Unknown;
@@ -77,7 +77,7 @@ public class UserAgentParser {
* @return 引擎版本
*/
private static String parseEngineVersion(Engine engine, String userAgentString) {
final String regexp = engine.getName() + "[\\/\\- ]([\\d\\w\\.\\-]+)";
final String regexp = engine.getName() + "[/\\- ]([\\d\\w.\\-]+)";
final Pattern pattern = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
return ReUtil.getGroup1(pattern, userAgentString);
}

View File

@@ -149,4 +149,17 @@ public class UserAgentUtilTest {
Assert.assertEquals("Windows", ua.getPlatform().toString());
Assert.assertFalse(ua.isMobile());
}
@Test
public void parseEdgeTest() {
String uaStr = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.69 Safari/537.36 Edg/81.0.416.34";
UserAgent ua = UserAgentUtil.parse(uaStr);
Assert.assertEquals("MSEdge", ua.getBrowser().toString());
Assert.assertEquals("81.0.416.34", ua.getVersion());
Assert.assertEquals("Webkit", ua.getEngine().toString());
Assert.assertEquals("537.36", ua.getEngineVersion());
Assert.assertEquals("Windows 10 or Windows Server 2016", ua.getOs().toString());
Assert.assertEquals("Windows", ua.getPlatform().toString());
Assert.assertFalse(ua.isMobile());
}
}