Added Caching Module
The Caching Module Caches the images that have been extracted and for persistence writes the images to a cache file. In the cache file the data is stored by tab separated values `%s\t%s\t%s` the cache is first loaded in the memory ( CACHE_LIST ) during the start of application and then extracted images are added to the map CACHE_LIST which is writtern to the cache file before exiting the program.
This commit is contained in:
parent
ee7cc71879
commit
459b6b2f02
41
cache/cache.go
vendored
Normal file
41
cache/cache.go
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package cache
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
CACHE_LIST map[[2]string]string = make(map[[2]string]string)
|
||||||
|
)
|
||||||
|
|
||||||
|
func loadCache(path string) {
|
||||||
|
cacheFileContent, err := ioutil.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Could Not Read From Cache File")
|
||||||
|
}
|
||||||
|
lineSlice := strings.Split(string(cacheFileContent), "\n")
|
||||||
|
for _, line := range lineSlice {
|
||||||
|
if len(line) != 0 {
|
||||||
|
param := strings.Split(line, "\t")
|
||||||
|
if len(param) == 3 {
|
||||||
|
CACHE_LIST[[2]string{param[0], param[1]}] = param[2]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeToCache(path string) {
|
||||||
|
b, err := os.Create(path)
|
||||||
|
if err == nil {
|
||||||
|
for k, v := range CACHE_LIST {
|
||||||
|
b.Write([]byte(fmt.Sprintf("%s\t%s\t%s\n", k[0], k[1], v)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateName(artist, album string) string {
|
||||||
|
return fmt.Sprintf("%s-%s.jpg", artist, album)
|
||||||
|
}
|
16
cache/cache_test.go
vendored
Normal file
16
cache/cache_test.go
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package cache
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestLoadCache(t *testing.T) {
|
||||||
|
expectedResult := [2]string{"hello/wer.jpg", "hello/iwer.jpg"}
|
||||||
|
loadCache("./testdata/cache.txt")
|
||||||
|
var i int = 0
|
||||||
|
for _, v := range CACHE_LIST {
|
||||||
|
if v != expectedResult[i] {
|
||||||
|
if v != expectedResult[i+1] {
|
||||||
|
t.Errorf("Didn't Get The Expected Value receieved %s", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
cache/testdata/cache.txt
vendored
Normal file
2
cache/testdata/cache.txt
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Kanye West Life Of Pablo hello/wer.jpg
|
||||||
|
Niravana Heart Shaped Box hello/iwer.jpg
|
Loading…
Reference in New Issue
Block a user