From d59029f8254d0d1446792fe10d39b99341dca474 Mon Sep 17 00:00:00 2001 From: E-Lynn Yap Date: Wed, 31 Jan 2018 10:22:55 -0800 Subject: [PATCH 1/5] Allow library to be initialized with a reader (#1) and improve test cases --- browscap.go | 15 +++++++++++++++ browscap_test.go | 34 +++++++++++++++++++++++++++++++++- loader.go | 7 ++++++- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/browscap.go b/browscap.go index 8bd4023..e98181d 100644 --- a/browscap.go +++ b/browscap.go @@ -4,6 +4,7 @@ package browscap_go import ( + "bufio" "fmt" "io/ioutil" "net/http" @@ -42,6 +43,20 @@ func InitBrowsCap(path string, 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 } diff --git a/browscap_test.go b/browscap_test.go index 168f450..208bc44 100644 --- a/browscap_test.go +++ b/browscap_test.go @@ -4,9 +4,11 @@ package browscap_go import ( + "bufio" "io/ioutil" "strings" "testing" + "os" ) const ( @@ -15,13 +17,34 @@ const ( TEST_IPHONE_AGENT = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5" ) -func TestInitBrowsCap(t *testing.T) { +func initFromTestIniFile(t *testing.T) { if err := InitBrowsCap(TEST_INI_FILE, false); err != nil { t.Fatalf("%v", err) } } +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" { @@ -38,6 +61,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" { @@ -52,6 +76,7 @@ func TestGetBrowserIPhone(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" { @@ -61,6 +86,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" { @@ -71,6 +97,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 { @@ -79,6 +106,7 @@ func TestGetBrowserIssues(t *testing.T) { t.Errorf("Expected tablet %q", browser.DeviceType) } } + func TestLastVersion(t *testing.T) { if testing.Short() { t.Skip("skipping test in short mode.") @@ -127,6 +155,10 @@ func BenchmarkInit(b *testing.B) { } func BenchmarkGetBrowser(b *testing.B) { + if err := InitBrowsCap(TEST_INI_FILE, false); err != nil { + b.Fatalf("%v", err) + } + data, err := ioutil.ReadFile("test-data/user_agents_sample.txt") if err != nil { b.Error(err) diff --git a/loader.go b/loader.go index 38efca9..1290fea 100644 --- a/loader.go +++ b/loader.go @@ -32,9 +32,14 @@ func loadFromIniFile(path string) (*dictionary, error) { } defer file.Close() + buf := bufio.NewReader(file) + + return loadFromReader(buf) +} + +func loadFromReader(buf *bufio.Reader) (*dictionary, error) { dict := newDictionary() - buf := bufio.NewReader(file) sectionName := "" lineNum := 0 From 4965962f92620f7a91c7cd100df4f7469edaa2c9 Mon Sep 17 00:00:00 2001 From: E-Lynn Yap Date: Wed, 31 Jan 2018 13:05:47 -0800 Subject: [PATCH 2/5] Refactor tests (#2) --- browscap_test.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/browscap_test.go b/browscap_test.go index 208bc44..55696cb 100644 --- a/browscap_test.go +++ b/browscap_test.go @@ -17,9 +17,9 @@ const ( TEST_IPHONE_AGENT = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5" ) -func initFromTestIniFile(t *testing.T) { +func initFromTestIniFile(tb testing.TB) { if err := InitBrowsCap(TEST_INI_FILE, false); err != nil { - t.Fatalf("%v", err) + tb.Fatalf("%v", err) } } @@ -155,9 +155,7 @@ func BenchmarkInit(b *testing.B) { } func BenchmarkGetBrowser(b *testing.B) { - if err := InitBrowsCap(TEST_INI_FILE, false); err != nil { - b.Fatalf("%v", err) - } + initFromTestIniFile(b) data, err := ioutil.ReadFile("test-data/user_agents_sample.txt") if err != nil { From b5d883fdbc0807033c1122c3ad3e5a7b2923f44a Mon Sep 17 00:00:00 2001 From: svc-ops <46041928+ops-github-DU4JOAWE@users.noreply.github.com> Date: Tue, 8 Oct 2019 16:22:49 -0400 Subject: [PATCH 3/5] Sync Probot Settings --- .github/settings.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/settings.yml diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000..e914268 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,12 @@ +repository: + default_branch: master +branches: +- name: master + protection: + required_status_checks: null + enforce_admins: false + required_pull_request_reviews: + dismissal_restrictions: {} + require_code_owner_reviews: true + required_approving_review_count: 1 + restrictions: null From 3c6c0a65853ad1f7d998d14a2f875299057bc0ee Mon Sep 17 00:00:00 2001 From: Azim Sonawalla Date: Wed, 11 Dec 2019 14:16:18 -0500 Subject: [PATCH 4/5] Add go module support --- go.mod | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 go.mod diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..7fab521 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/LiveRamp/browscap_go + +go 1.13 From d2b20a23f15e61039033192b0440ee9ff5947a17 Mon Sep 17 00:00:00 2001 From: Atlantis Bot Date: Tue, 20 Jun 2023 19:40:07 -0500 Subject: [PATCH 5/5] Manage Backstage metadata by Terraform https://github.com/LiveRamp/infrastructure/pull/27415 --- catalog-info.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 catalog-info.yaml diff --git a/catalog-info.yaml b/catalog-info.yaml new file mode 100644 index 0000000..38085f7 --- /dev/null +++ b/catalog-info.yaml @@ -0,0 +1,11 @@ +# BEGIN TERRAFORM MANAGED BLOCK +"apiVersion": "backstage.io/v1alpha1" +"kind": "Location" +"metadata": + "annotations": + "github.com/project-slug": "LiveRamp/browscap_go" + "description": "GoLang Library for Browser Capabilities Project" + "name": "browscap_go" + "tags": [] +"spec": {} +# END TERRAFORM MANAGED BLOCK