github.com/fzfile/BaiduPCS-Go@v0.0.0-20200606205115-4408961cf336/baidupcs/cache.go (about) 1 package baidupcs 2 3 import ( 4 "fmt" 5 "github.com/fzfile/BaiduPCS-Go/baidupcs/expires" 6 "github.com/fzfile/BaiduPCS-Go/baidupcs/pcserror" 7 "time" 8 ) 9 10 // deleteCache 删除含有 dirs 的缓存 11 func (pcs *BaiduPCS) deleteCache(dirs []string) { 12 cache := pcs.cacheOpMap.LazyInitCachePoolOp(OperationFilesDirectoriesList) 13 for _, v := range dirs { 14 key := v + "_" + defaultOrderOptionsStr 15 _, ok := cache.Load(key) 16 if ok { 17 cache.Delete(key) 18 } 19 } 20 } 21 22 // CacheFilesDirectoriesList 缓存获取 23 func (pcs *BaiduPCS) CacheFilesDirectoriesList(path string, options *OrderOptions) (fdl FileDirectoryList, pcsError pcserror.Error) { 24 data := pcs.cacheOpMap.CacheOperation(OperationFilesDirectoriesList, path+"_"+fmt.Sprint(options), func() expires.DataExpires { 25 fdl, pcsError = pcs.FilesDirectoriesList(path, options) 26 if pcsError != nil { 27 return nil 28 } 29 return expires.NewDataExpires(fdl, 1*time.Minute) 30 }) 31 if pcsError != nil { 32 return 33 } 34 return data.Data().(FileDirectoryList), nil 35 }