made the channel receive-only, introduced a vangen config ed

This commit is contained in:
Wouter Groeneveld 2021-04-15 20:55:30 +02:00
parent 54018ecc42
commit cd12b80170
4 changed files with 46 additions and 12 deletions

2
.gitignore vendored
View File

@ -9,4 +9,6 @@ testdata
# this is the binary # this is the binary
go-jamming go-jamming
vangen
*.sublime-workspace *.sublime-workspace

View File

@ -2,6 +2,8 @@ package mf
import ( import (
"brainbaking.com/go-jamming/common" "brainbaking.com/go-jamming/common"
"encoding/json"
"io/ioutil"
"strings" "strings"
"time" "time"
"willnorris.com/go/microformats" "willnorris.com/go/microformats"
@ -39,6 +41,19 @@ type IndiewebData struct {
Target string `json:"target"` 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 { func PublishedNow(utcOffset int) string {
return common.Now().UTC().Add(time.Duration(utcOffset) * time.Minute).Format("2006-01-02T15:04:05") return common.Now().UTC().Add(time.Duration(utcOffset) * time.Minute).Format("2006-01-02T15:04:05")
} }

View File

@ -2,38 +2,32 @@ package load
import ( import (
"brainbaking.com/go-jamming/app/mf" "brainbaking.com/go-jamming/app/mf"
"encoding/json"
"io/ioutil" "io/ioutil"
"path" "path"
) )
// FromDisk assumes that params have already been validated.
func FromDisk(domain string, dataPath string) mf.IndiewebDataResult { func FromDisk(domain string, dataPath string) mf.IndiewebDataResult {
// assume that params have already been validated.
loadPath := path.Join(dataPath, domain) loadPath := path.Join(dataPath, domain)
info, _ := ioutil.ReadDir(loadPath) info, _ := ioutil.ReadDir(loadPath)
amountOfFiles := len(info) amountOfFiles := len(info)
results := make(chan *mf.IndiewebData, amountOfFiles) results := make(chan *mf.IndiewebData, amountOfFiles)
for _, file := range info { for _, file := range info {
fileName := file.Name() go func(fileName string) {
go func() { results <- mf.RequireFromFile(path.Join(loadPath, fileName))
data, _ := ioutil.ReadFile(path.Join(loadPath, fileName)) }(file.Name())
indiewebData := &mf.IndiewebData{}
json.Unmarshal(data, indiewebData)
results <- indiewebData
}()
} }
indiewebResults := gather(amountOfFiles, results) indiewebResults := gather(amountOfFiles, results)
return mf.WrapResult(indiewebResults) 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 var indiewebResults []*mf.IndiewebData
for i := 0; i < amount; i++ { for i := 0; i < amount; i++ {
result := <-results result := <-results
// json marshal errors are ignored in the above scatter func.Highly unlikely, but still. if !result.IsEmpty() {
if result.Url != "" {
indiewebResults = append(indiewebResults, result) indiewebResults = append(indiewebResults, result)
} }
} }

23
vangen.json Normal file
View File

@ -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"
}
]
}