From 8b336e06f15263310eb82345fb2778414ed76879 Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Mon, 15 Apr 2024 12:06:51 -0600 Subject: persist the httpcache to the filesystem --- cmd/generate/httpcache.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'cmd/generate') diff --git a/cmd/generate/httpcache.go b/cmd/generate/httpcache.go index 87d2fb5..cff0c7c 100644 --- a/cmd/generate/httpcache.go +++ b/cmd/generate/httpcache.go @@ -5,6 +5,9 @@ import ( "fmt" "io" "net/http" + "net/url" + "os" + "path/filepath" ) var httpCache = map[string]string{} @@ -13,6 +16,17 @@ func httpGet(u string) (string, error) { if cache, ok := httpCache[u]; ok { return cache, nil } + if err := os.Mkdir(".http-cache", 0777); err != nil && !os.IsExist(err) { + return "", err + } + cacheFile := filepath.Join(".http-cache", url.QueryEscape(u)) + if bs, err := os.ReadFile(cacheFile); err == nil { + httpCache[u] = string(bs) + return httpCache[u], nil + } else if !os.IsNotExist(err) { + return "", err + } + fmt.Printf("GET %q...", u) resp, err := http.Get(u) if err != nil { @@ -29,6 +43,9 @@ func httpGet(u string) (string, error) { return "", err } fmt.Printf(" ok\n") + if err := os.WriteFile(cacheFile, bs, 0666); err != nil { + return "", err + } httpCache[u] = string(bs) return httpCache[u], nil } -- cgit v1.2.3-2-g168b