2
0

Add support for Opera Touch and Edge for Android

This commit is contained in:
Milos Mileusnic
2019-01-29 21:59:25 +01:00
parent a77e51dd1c
commit 3e331f0949
2 changed files with 21 additions and 1 deletions
+11
View File
@@ -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"]
+10 -1
View File
@@ -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},