Skip to content

Commit

Permalink
Allow library to be initialized with a reader (#1) and improve test c…
Browse files Browse the repository at this point in the history
…ases
  • Loading branch information
elynnyap authored and skaurus committed Jul 15, 2022
1 parent 0cb8ea1 commit 83aad6b
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 1 deletion.
14 changes: 14 additions & 0 deletions browscap.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,20 @@ func InitBrowsCapFromBuffer(buf *bufio.Reader, force bool) error {
return nil
}

func InitBrowsCapFromReader(reader *bufio.Reader, force bool) error {
if initialized && !force {
return nil
}
var err error

if dict, err = loadFromReader(reader); err != nil {
return fmt.Errorf("browscap: An error occurred while loading from reader, %v ", err)
}

initialized = true
return nil
}

func InitializedVersion() string {
return version
}
Expand Down
27 changes: 27 additions & 0 deletions browscap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
package browscap_go

import (
"bufio"
"io/ioutil"
"strings"
"testing"
"os"
)

const (
Expand All @@ -22,7 +24,28 @@ func initFromTestIniFile(tb testing.TB) {
}
}

func TestInitBrowsCap(t *testing.T) {
if err := InitBrowsCap(TEST_INI_FILE, true); err != nil {
t.Fatalf("%v", err)
}
}

func TestInitBrowsCapFromReader(t *testing.T) {
file, err := os.Open(TEST_INI_FILE)
if err != nil {
t.Fatalf("%v", err)
}
defer file.Close()

buf := bufio.NewReader(file)

if err := InitBrowsCapFromReader(buf, true); err != nil {
t.Fatalf("%v", err)
}
}

func TestGetBrowser(t *testing.T) {
initFromTestIniFile(t)
if browser, ok := GetBrowser(TEST_USER_AGENT); !ok {
t.Error("Browser not found")
} else if browser.Browser != "Chrome" {
Expand All @@ -39,6 +62,7 @@ func TestGetBrowser(t *testing.T) {
}

func TestGetBrowserIPhone(t *testing.T) {
initFromTestIniFile(t)
if browser, ok := GetBrowser(TEST_IPHONE_AGENT); !ok {
t.Error("Browser not found")
} else if browser.DeviceName != "iPhone" {
Expand All @@ -65,6 +89,7 @@ func TestGetBrowserAndroid(t *testing.T) {
}

func TestGetBrowserYandex(t *testing.T) {
initFromTestIniFile(t)
if browser, ok := GetBrowser("Yandex Browser 1.1"); !ok {
t.Error("Browser not found")
} else if browser.Browser != "Yandex Browser" {
Expand All @@ -75,6 +100,7 @@ func TestGetBrowserYandex(t *testing.T) {
}

func TestGetBrowser360Spider(t *testing.T) {
initFromTestIniFile(t)
if browser, ok := GetBrowser("360Spider"); !ok {
t.Error("Browser not found")
} else if browser.Browser != "360Spider" {
Expand All @@ -85,6 +111,7 @@ func TestGetBrowser360Spider(t *testing.T) {
}

func TestGetBrowserIssues(t *testing.T) {
initFromTestIniFile(t)
// https://github.com/digitalcrab/browscap_go/issues/4
ua := "Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3"
if browser, ok := GetBrowser(ua); !ok {
Expand Down
14 changes: 13 additions & 1 deletion loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,19 @@ var (
versionKey = "Version"
)

func loadFromIniFileBuffer(buf *bufio.Reader) (*dictionary, error) {
func loadFromIniFile(path string) (*dictionary, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()

buf := bufio.NewReader(file)

return loadFromReader(buf)
}

func loadFromReader(buf *bufio.Reader) (*dictionary, error) {
dict := newDictionary()

sectionName := ""
Expand Down

0 comments on commit 83aad6b

Please sign in to comment.