From d9c3fc1d686a1936c065c2cd2aae219ea392abd6 Mon Sep 17 00:00:00 2001 From: surtur Date: Tue, 8 Aug 2023 23:20:09 +0200 Subject: [PATCH] go(localbreach): tweak code,test for multidoc yaml --- modules/localbreach/breach.go | 31 ++++++++++++++++++------- modules/localbreach/testdata/test1.yaml | 15 ++++++++++++ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/modules/localbreach/breach.go b/modules/localbreach/breach.go index d62b3a2..8e15663 100644 --- a/modules/localbreach/breach.go +++ b/modules/localbreach/breach.go @@ -4,6 +4,8 @@ package localbreach import ( + "bytes" + "io" "os" "time" @@ -25,27 +27,38 @@ type BreachDataSchema struct { } // Load loads local breach data. -func Load(path string) (*BreachDataSchema, error) { +func Load(path string) (*[]BreachDataSchema, error) { b, err := os.ReadFile(path) if err != nil { return nil, err } - localBreach, err := loadLocalBreach(b) + lb, err := loadLocalBreach(b) if err != nil { return nil, err } - return localBreach, nil + return lb, nil } -func loadLocalBreach(b []byte) (*BreachDataSchema, error) { - localBreach := new(BreachDataSchema) +func loadLocalBreach(b []byte) (*[]BreachDataSchema, error) { + r := bytes.NewReader(b) + decoder := yaml.NewDecoder(r) + lb := make([]BreachDataSchema, 0) - err := yaml.Unmarshal(b, localBreach) - if err != nil { - return nil, err + var bds BreachDataSchema + + for { + if err := decoder.Decode(&bds); err != nil { + if err != io.EOF { + return nil, err + } + + break // get out when there are no more documents to read. + } + + lb = append(lb, bds) } - return localBreach, nil + return &lb, nil } diff --git a/modules/localbreach/testdata/test1.yaml b/modules/localbreach/testdata/test1.yaml index 2b871cd..8f352f5 100644 --- a/modules/localbreach/testdata/test1.yaml +++ b/modules/localbreach/testdata/test1.yaml @@ -18,4 +18,19 @@ data: - password1 - qwertyasdf - 0987654321 +--- +name: test breach 2 +time: 2022-11-12 +isVerified: false +containsPasswds: true +containsHashes: false +containsUsernames: false +containsEmails: true +data: + emails: + - aa@bb.cc + - dfjsnlads@gmail.com + passwds: + - password1 + - "" ...