diff options
Diffstat (limited to 'storage/storage.go')
-rw-r--r-- | storage/storage.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/storage/storage.go b/storage/storage.go new file mode 100644 index 0000000..b788efb --- /dev/null +++ b/storage/storage.go @@ -0,0 +1,30 @@ +package storage + +import ( + "crypto/sha256" + "fmt" + "io" +) + +type WalkMode int + +const ( + Folder WalkMode = iota + File + FileFolder +) + +type Storage interface { + Walk(path string, walkMode WalkMode) <-chan string + Get(path string) (io.Reader, error) +} + +func CalculateSHA256(r io.Reader) (string, error) { + h := sha256.New() + if _, err := io.Copy(h, r); err != nil { + return "", err + } + + return fmt.Sprintf("%x", h.Sum(nil)), nil + +} |