diff options
| author | Shulhan <ms@kilabit.info> | 2025-06-21 15:20:01 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2025-06-27 12:19:23 +0700 |
| commit | 1ca561ed0ecfa59b70a10191ac8e58cde90d126e (patch) | |
| tree | 80f0c65f7e9321ad92dfc1a53a444226cee4be3d /internal/internal.go | |
| parent | 8bc8fce1bd80b5a25c452ac5a24b1a1e3f5a4feb (diff) | |
| download | jarink-1ca561ed0ecfa59b70a10191ac8e58cde90d126e.tar.xz | |
brokenlinks: implement caching for external URLs
Any succesful fetch on external URLs, will be recorded into jarink
cache file, located in user's home cache directory.
For example, in Linux it would be `$HOME/.cache/jarink/cache.json`.
This help improve the future rescanning on the same or different target
URL, minimizing network requests.
Diffstat (limited to 'internal/internal.go')
| -rw-r--r-- | internal/internal.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/internal/internal.go b/internal/internal.go new file mode 100644 index 0000000..7127932 --- /dev/null +++ b/internal/internal.go @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2025 M. Shulhan <ms@kilabit.info> +// SPDX-License-Identifier: GPL-3.0-only + +package internal + +import ( + "fmt" + "os" + "path/filepath" +) + +// CacheFile return the path to cache file under [os.UserCacheDir] + +// "jarink" directory. +// This variable defined here so the test file can override it. +var CacheFile = DefaultCacheFile + +func DefaultCacheFile() (cacheFile string, err error) { + var logp = `DefaultCacheFile` + var cacheDir string + + cacheDir, err = os.UserCacheDir() + if err != nil { + return ``, fmt.Errorf(`%s: %w`, logp, err) + } + cacheDir = filepath.Join(cacheDir, `jarink`) + + err = os.MkdirAll(cacheDir, 0700) + if err != nil { + return ``, fmt.Errorf(`%s: %w`, logp, err) + } + + cacheFile = filepath.Join(cacheDir, `cache.json`) + return cacheFile, nil +} |
