Этот коммит содержится в:
Christopher Speller
2017-05-17 16:51:25 -04:00
коммит произвёл GitHub
родитель cd23b8139a
Коммит d103ed6ca9
1001 изменённых файлов: 191052 добавлений и 5192 удалений

40
vendor/github.com/mssola/user_agent/browser.go сгенерированный поставляемый
Просмотреть файл

@@ -1,4 +1,4 @@
// Copyright (C) 2012-2014 Miquel Sabaté Solà <mikisabate@gmail.com>
// Copyright (C) 2012-2017 Miquel Sabaté Solà <mikisabate@gmail.com>
// This file is licensed under the MIT license.
// See the LICENSE file.
@@ -9,6 +9,8 @@ import (
"strings"
)
var ie11Regexp = regexp.MustCompile("^rv:(.+)$")
// A struct containing all the information that we might be
// interested from the browser.
type Browser struct {
@@ -34,27 +36,46 @@ func (p *UserAgent) detectBrowser(sections []section) {
slen := len(sections)
if sections[0].name == "Opera" {
p.mozilla = ""
p.browser.Name = "Opera"
p.browser.Version = sections[0].version
p.browser.Engine = "Presto"
if slen > 1 {
p.browser.EngineVersion = sections[1].version
}
} else if sections[0].name == "Dalvik" {
// When Dalvik VM is in use, there is no browser info attached to ua.
// Although browser is still a Mozilla/5.0 compatible.
p.mozilla = "5.0"
} else if slen > 1 {
engine := sections[1]
p.browser.Engine = engine.name
p.browser.EngineVersion = engine.version
if slen > 2 {
p.browser.Version = sections[2].version
sectionIndex := 2
// The version after the engine comment is empty on e.g. Ubuntu
// platforms so if this is the case, let's use the next in line.
if sections[2].version == "" && slen > 3 {
sectionIndex = 3
}
p.browser.Version = sections[sectionIndex].version
if engine.name == "AppleWebKit" {
if sections[slen-1].name == "OPR" {
switch sections[slen-1].name {
case "Edge":
p.browser.Name = "Edge"
p.browser.Version = sections[slen-1].version
p.browser.Engine = "EdgeHTML"
p.browser.EngineVersion = ""
case "OPR":
p.browser.Name = "Opera"
p.browser.Version = sections[slen-1].version
} else if sections[2].name == "Chrome" {
p.browser.Name = "Chrome"
} else {
p.browser.Name = "Safari"
default:
if sections[sectionIndex].name == "Chrome" {
p.browser.Name = "Chrome"
} else if sections[sectionIndex].name == "Chromium" {
p.browser.Name = "Chromium"
} else {
p.browser.Name = "Safari"
}
}
} else if engine.name == "Gecko" {
name := sections[2].name
@@ -67,9 +88,8 @@ func (p *UserAgent) detectBrowser(sections []section) {
// This is the new user agent from Internet Explorer 11.
p.browser.Engine = "Trident"
p.browser.Name = "Internet Explorer"
reg, _ := regexp.Compile("^rv:(.+)$")
for _, c := range sections[0].comment {
version := reg.FindStringSubmatch(c)
version := ie11Regexp.FindStringSubmatch(c)
if len(version) > 0 {
p.browser.Version = version[1]
return