diff options
author | rsiddharth <s@ricketyspace.net> | 2020-09-17 23:46:17 -0400 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2020-09-17 23:47:37 -0400 |
commit | d5d8dd74c8f509f45b015435f21d7ea2173ec457 (patch) | |
tree | d96ba162746e25e73850800a2de5179f908dbbed | |
parent | f9dc34fe2815278477ca1641938db9a59807e529 (diff) |
cedar.go: add cacheFor
-rw-r--r-- | cedar.go | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -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() {} |