From d5d8dd74c8f509f45b015435f21d7ea2173ec457 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Thu, 17 Sep 2020 23:46:17 -0400 Subject: cedar.go: add cacheFor --- cedar.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/cedar.go b/cedar.go index 6571259..49b1330 100644 --- a/cedar.go +++ b/cedar.go @@ -1,10 +1,12 @@ package main import ( + "encoding/json" "encoding/xml" "io" "net/http" "os" + "path" ) type Link struct { @@ -24,6 +26,8 @@ type Feed struct { Entry []Entry `xml:"entry"` } +type Ids []string + func newsFeed() ([]byte, error) { // Init feed. feed := make([]byte, 0) @@ -75,4 +79,32 @@ func readFile(f *os.File) ([]byte, error) { return bs, nil } +func cacheFor(section string) (Ids, error) { + cache := make(Ids, 0) + + h, _ := os.UserHomeDir() + d := path.Join(h, ".cedar") + + err := os.MkdirAll(d, 0700) + if err != nil { + return cache, err + } + + f, err := os.Open(path.Join(d, section+".json")) + if os.IsNotExist(err) { + return cache, nil + } + + bs, err := readFile(f) + if err != nil { + return cache, err + } + + err = json.Unmarshal(bs, &cache) + if err != nil { + return cache, err + } + return cache, nil +} + func main() {} -- cgit v1.2.3