From cd12b8017089c47b1830bc717101e87320d5ab6b Mon Sep 17 00:00:00 2001 From: wgroeneveld Date: Thu, 15 Apr 2021 20:55:30 +0200 Subject: [PATCH] made the channel receive-only, introduced a vangen config ed --- .gitignore | 2 ++ app/mf/microformats.go | 15 +++++++++++++++ app/webmention/load/loader.go | 18 ++++++------------ vangen.json | 23 +++++++++++++++++++++++ 4 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 vangen.json diff --git a/.gitignore b/.gitignore index 5bbaca5..32cf5c6 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ testdata # this is the binary go-jamming +vangen + *.sublime-workspace diff --git a/app/mf/microformats.go b/app/mf/microformats.go index d559887..5e219d6 100644 --- a/app/mf/microformats.go +++ b/app/mf/microformats.go @@ -2,6 +2,8 @@ package mf import ( "brainbaking.com/go-jamming/common" + "encoding/json" + "io/ioutil" "strings" "time" "willnorris.com/go/microformats" @@ -39,6 +41,19 @@ type IndiewebData struct { Target string `json:"target"` } +func (id *IndiewebData) IsEmpty() bool { + return id.Url == "" +} + +// RequireFromFile converts the file JSON contents into the indieweb struct. +// This ignores read and marshall errors and returns an emtpy struct instead. +func RequireFromFile(file string) *IndiewebData { + indiewebData := &IndiewebData{} + data, _ := ioutil.ReadFile(file) + json.Unmarshal(data, indiewebData) + return indiewebData +} + func PublishedNow(utcOffset int) string { return common.Now().UTC().Add(time.Duration(utcOffset) * time.Minute).Format("2006-01-02T15:04:05") } diff --git a/app/webmention/load/loader.go b/app/webmention/load/loader.go index 4c47b1c..57657ba 100644 --- a/app/webmention/load/loader.go +++ b/app/webmention/load/loader.go @@ -2,38 +2,32 @@ package load import ( "brainbaking.com/go-jamming/app/mf" - "encoding/json" "io/ioutil" "path" ) +// FromDisk assumes that params have already been validated. func FromDisk(domain string, dataPath string) mf.IndiewebDataResult { - // assume that params have already been validated. loadPath := path.Join(dataPath, domain) info, _ := ioutil.ReadDir(loadPath) amountOfFiles := len(info) results := make(chan *mf.IndiewebData, amountOfFiles) for _, file := range info { - fileName := file.Name() - go func() { - data, _ := ioutil.ReadFile(path.Join(loadPath, fileName)) - indiewebData := &mf.IndiewebData{} - json.Unmarshal(data, indiewebData) - results <- indiewebData - }() + go func(fileName string) { + results <- mf.RequireFromFile(path.Join(loadPath, fileName)) + }(file.Name()) } indiewebResults := gather(amountOfFiles, results) return mf.WrapResult(indiewebResults) } -func gather(amount int, results chan *mf.IndiewebData) []*mf.IndiewebData { +func gather(amount int, results <-chan *mf.IndiewebData) []*mf.IndiewebData { var indiewebResults []*mf.IndiewebData for i := 0; i < amount; i++ { result := <-results - // json marshal errors are ignored in the above scatter func.Highly unlikely, but still. - if result.Url != "" { + if !result.IsEmpty() { indiewebResults = append(indiewebResults, result) } } diff --git a/vangen.json b/vangen.json new file mode 100644 index 0000000..014dfd5 --- /dev/null +++ b/vangen.json @@ -0,0 +1,23 @@ +{ + "domain": "brainbaking.com", + "repositories": [ + { + "prefix": "go-jamming", + "subs": [ + "app", + "app/index", + "app/mf", + "app/pingback", + "app/pingback/send", + "app/rss", + "app/webmention", + "app/webmention/load", + "app/webmention/recv", + "app/webmention/send", + "common", + "rest" + ], + "url": "https://github.com/wgroeneveld/go-jamming" + } + ] +} \ No newline at end of file