精简后的项目:仅保留 api/ui 源码、文档、构建依赖
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"sync"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// CachePathForMedia is a low-level implementation for Media.CachePath()
|
||||
func CachePathForMedia(albumID int, mediaID int) (string, error) {
|
||||
|
||||
// Make root cache dir if not exists
|
||||
if _, err := os.Stat(MediaCachePath()); os.IsNotExist(err) {
|
||||
if err := os.Mkdir(MediaCachePath(), os.ModePerm); err != nil {
|
||||
return "", errors.Wrap(err, "could not make root image cache directory")
|
||||
}
|
||||
}
|
||||
|
||||
// Make album cache dir if not exists
|
||||
albumCachePath := path.Join(MediaCachePath(), strconv.Itoa(int(albumID)))
|
||||
if _, err := os.Stat(albumCachePath); os.IsNotExist(err) {
|
||||
if err := os.Mkdir(albumCachePath, os.ModePerm); err != nil {
|
||||
return "", errors.Wrap(err, "could not make album image cache directory")
|
||||
}
|
||||
}
|
||||
|
||||
// Make photo cache dir if not exists
|
||||
photoCachePath := path.Join(albumCachePath, strconv.Itoa(int(mediaID)))
|
||||
if _, err := os.Stat(photoCachePath); os.IsNotExist(err) {
|
||||
if err := os.Mkdir(photoCachePath, os.ModePerm); err != nil {
|
||||
return "", errors.Wrap(err, "could not make photo image cache directory")
|
||||
}
|
||||
}
|
||||
|
||||
return photoCachePath, nil
|
||||
}
|
||||
|
||||
var (
|
||||
testCachePath string = ""
|
||||
testCachePathLocker sync.RWMutex
|
||||
)
|
||||
|
||||
func GetTestCachePath() string {
|
||||
testCachePathLocker.RLock()
|
||||
defer testCachePathLocker.RUnlock()
|
||||
return testCachePath
|
||||
}
|
||||
|
||||
func ConfigureTestCache(tmpDir string) {
|
||||
testCachePathLocker.Lock()
|
||||
defer testCachePathLocker.Unlock()
|
||||
testCachePath = tmpDir
|
||||
}
|
||||
|
||||
// MediaCachePath returns the path for where the media cache is located on the file system
|
||||
func MediaCachePath() string {
|
||||
testCachePathLocker.RLock()
|
||||
cachedPath := testCachePath
|
||||
testCachePathLocker.RUnlock()
|
||||
if cachedPath != "" {
|
||||
return cachedPath
|
||||
}
|
||||
|
||||
photoCache := EnvMediaCachePath.GetValue()
|
||||
if photoCache == "" {
|
||||
photoCache = "./media_cache"
|
||||
}
|
||||
|
||||
return photoCache
|
||||
}
|
||||
Reference in New Issue
Block a user