Skip to content

Commit

Permalink
Catch up with woothee v1.8.0 (#15)
Browse files Browse the repository at this point in the history
* Update datasets

* Add YandexBrowser
  • Loading branch information
tell-k authored and hhatto committed Jul 23, 2018
1 parent fbe673e commit e870e34
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 1 deletion.
5 changes: 5 additions & 0 deletions dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ var DefaultDataSet DataSet = DataSet{
Type: "",
Vendor: "OS vendor",
},
"YaBrowser": &Result{
Name: "Yandex Browser",
Type: "",
Vendor: "Yandex",
},
"Win": &Result{
Name: "Windows UNKNOWN Ver",
Type: "pc",
Expand Down
22 changes: 22 additions & 0 deletions parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ var (
rxOperaVersionPattern2 = regexp.MustCompile(`Opera[/ ]([.0-9]+)`)
rxOperaVersionPattern3 = regexp.MustCompile(`OPR/([.0-9]+)`)
rxVivaldiPattern = regexp.MustCompile(`Vivaldi/([.0-9]+)`)
rxYandexBrowserPattern = regexp.MustCompile(`YaBrowser/([.0-9]+)`)
rxSafariPattern = regexp.MustCompile(`Version/([.0-9]+)`)
rxSoftbankPattern = regexp.MustCompile(`(?:SoftBank|Vodafone|J-PHONE)/[.0-9]+/([^ /;()]+)`)
rxTridentPattern = regexp.MustCompile(`Trident/([.0-9]+);(?: BOIE[0-9]+;[A-Z]+;)? rv:([.0-9]+)`)
Expand Down Expand Up @@ -177,6 +178,11 @@ func (p *Parser) TryBrowser(agent string, result *Result) (err error) {
return
}

err = p.ChallengeYandexBrowser(agent, result)
if err == nil {
return
}

err = p.ChallengeFirefoxiOS(agent, result)
if err == nil {
return
Expand Down Expand Up @@ -1123,6 +1129,22 @@ func (p *Parser) ChallengeVivaldi(agent string, result *Result) error {
return nil
}

func (p *Parser) ChallengeYandexBrowser(agent string, result *Result) error {
version := ValueUnknown
if matches := rxYandexBrowserPattern.FindStringSubmatch(agent); matches != nil {
version = matches[1]
} else {
return ErrNoMatch
}

err := p.PopulateDataSet(result, "YaBrowser")
if err != nil {
return err
}
result.Version = version
return nil
}

func (p *Parser) ChallengeFirefoxiOS(agent string, result *Result) error {
if matches := rxFirefoxiOSPattern.FindStringSubmatch(agent); matches != nil {
result.Version = matches[1]
Expand Down
21 changes: 20 additions & 1 deletion pc_misc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -390,5 +390,24 @@ func Test_pc_misc(t *testing.T) {
t.Errorf("Expected result.Version for '%s' to be '33.0.1750.152', but got '%s'", `Mozilla/5.0 (X11; CrOS x86_64 5116.115.4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36`, result.Version)
}
}

result, err = Parse(`Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36`)
if err != nil {
t.Errorf(`Failed to parse 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36': %s`, err)
} else {
if result.Category != "pc" {
t.Errorf("Expected result.Category for '%s' to be 'pc', but got '%s'", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36`, result.Category)
}
if result.Name != "Yandex Browser" {
t.Errorf("Expected result.Name for '%s' to be 'Yandex Browser', but got '%s'", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36`, result.Name)
}
if result.Os != "Linux" {
t.Errorf("Expected result.Os for '%s' to be 'Linux', but got '%s'", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36`, result.Os)
}
if result.OsVersion != "UNKNOWN" {
t.Errorf("Expected result.OsVersion for '%s' to be 'UNKNOWN', but got '%s'", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36`, result.OsVersion)
}
if result.Version != "17.11.1.1087" {
t.Errorf("Expected result.Version for '%s' to be '17.11.1.1087', but got '%s'", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1087 (beta) Yowser/2.5 Safari/537.36`, result.Version)
}
}
}
20 changes: 20 additions & 0 deletions pc_win_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,5 +528,25 @@ func Test_pc_win(t *testing.T) {
t.Errorf("Expected result.Version for '%s' to be 'UNKNOWN', but got '%s'", `Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20111105 Thunderbird/8.0`, result.Version)
}
}
result, err = Parse(`Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36`)
if err != nil {
t.Errorf(`Failed to parse 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36': %s`, err)
} else {
if result.Category != "pc" {
t.Errorf("Expected result.Category for '%s' to be 'pc', but got '%s'", `Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36`, result.Category)
}
if result.Name != "Yandex Browser" {
t.Errorf("Expected result.Name for '%s' to be 'Yandex Browser', but got '%s'", `Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36`, result.Name)
}
if result.Os != "Windows 7" {
t.Errorf("Expected result.Os for '%s' to be 'Windows 7', but got '%s'", `Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36`, result.Os)
}
if result.OsVersion != "NT 6.1" {
t.Errorf("Expected result.OsVersion for '%s' to be 'NT 6.1', but got '%s'", `Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36`, result.OsVersion)
}
if result.Version != "18.1.1.839" {
t.Errorf("Expected result.Version for '%s' to be '18.1.1.839', but got '%s'", `Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 YaBrowser/18.1.1.839 Yowser/2.5 Safari/537.36`, result.Version)
}
}

}

0 comments on commit e870e34

Please sign in to comment.