From 3e331f0949a545b6362f47a5beca8b0370a098a1 Mon Sep 17 00:00:00 2001 From: Milos Mileusnic Date: Tue, 29 Jan 2019 21:59:25 +0100 Subject: [PATCH] Add support for Opera Touch and Edge for Android --- ua.go | 11 +++++++++++ ua_test.go | 11 ++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ua.go b/ua.go index 5b8c873..41d7d8a 100644 --- a/ua.go +++ b/ua.go @@ -40,6 +40,7 @@ const ( Opera = "Opera" OperaMini = "Opera Mini" + OperaTouch = "Opera Touch" Chrome = "Chrome" Firefox = "Firefox" InternetExplorer = "Internet Explorer" @@ -137,6 +138,11 @@ func Parse(userAgent string) UserAgent { ua.Version = tokens["OPR"] ua.Mobile = tokens.existsAny("Mobile", "Mobile Safari") + case tokens["OPT"] != "": + ua.Name = OperaTouch + ua.Version = tokens["OPT"] + ua.Mobile = tokens.existsAny("Mobile", "Mobile Safari") + // Opera on iOS case tokens["OPiOS"] != "": ua.Name = Opera @@ -174,6 +180,11 @@ func Parse(userAgent string) UserAgent { ua.Version = tokens["Edge"] ua.Mobile = tokens.existsAny("Mobile", "Mobile Safari") + case tokens["EdgA"] != "": + ua.Name = Edge + ua.Version = tokens["EdgA"] + ua.Mobile = tokens.existsAny("Mobile", "Mobile Safari") + case tokens["bingbot"] != "": ua.Name = "Bingbot" ua.Version = tokens["bingbot"] diff --git a/ua_test.go b/ua_test.go index 4b65f5b..cc2d40f 100644 --- a/ua_test.go +++ b/ua_test.go @@ -5,11 +5,12 @@ import ( "strings" "testing" - "github.com/mileusna/useragent" + ua "github.com/mileusna/useragent" ) func TestParse(t *testing.T) { var testTable = [][]string{ + // useragent, name, version, mobile, os // Mac {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8", ua.Safari, "10.1.2", "desktop", "macOS"}, {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36", ua.Chrome, "60.0.3112.90", "desktop", "macOS"}, @@ -43,6 +44,14 @@ func TestParse(t *testing.T) { {"Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-A310F/A310FXXU2BQB1 Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/5.4 Chrome/51.0.2704.106 Mobile Safari/537.36", "Samsung Browser", "5.4", "mobile", "Android"}, + // useragent, name, version, mobile, os + {"Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36", ua.Chrome, "71.0.3578.99", "mobile", ua.Android}, + {"Mozilla/5.0 (Android 9; Mobile; rv:64.0) Gecko/64.0 Firefox/64.0", ua.Firefox, "64.0", "mobile", ua.Android}, + {"Opera/9.80 (Android; Opera Mini/38.0.2254/128.54; U; en) Presto/2.12.423 Version/12.16", ua.OperaMini, "38.0.2254/128.54", "mobile", ua.Android}, + {"Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003 Build/PKQ1.180716.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36 OPR/49.2.2361.134358", ua.Opera, "49.2.2361.134358", "mobile", ua.Android}, + {"Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003 Build/PKQ1.180716.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36 EdgA/42.0.92.2864", ua.Edge, "42.0.92.2864", "mobile", ua.Android}, + {"Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003 Build/PKQ1.180716.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 OPT/1.14.51", ua.OperaTouch, "1.14.51", "mobile", ua.Android}, + // Windows phone {"Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 630)", ua.InternetExplorer, "7.0", "mobile", ua.WindowsPhone},