summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2020-09-17 23:46:17 -0400
committerrsiddharth <s@ricketyspace.net>2020-09-17 23:47:37 -0400
commitd5d8dd74c8f509f45b015435f21d7ea2173ec457 (patch)
treed96ba162746e25e73850800a2de5179f908dbbed
parentf9dc34fe2815278477ca1641938db9a59807e529 (diff)
cedar.go: add cacheFor
-rw-r--r--cedar.go32
1 files changed, 32 insertions, 0 deletions
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() {}