sliproad/files/disk.go

49 lines
924 B
Go
Raw Normal View History

package files
import (
"io/ioutil"
"os"
"strings"
)
type DiskProvider struct{
FileProvider
}
func (dp *DiskProvider) GetDirectory(path string) Directory {
rp := strings.Join([]string{dp.Location,path}, "/")
fileDir, err := ioutil.ReadDir(rp)
if err != nil {
_ = os.MkdirAll(path, 0644)
}
var fileList []FileInfo
for _, file := range fileDir {
info := FileInfo{
IsDirectory: file.IsDir(),
Name: file.Name(),
}
if !info.IsDirectory {
split := strings.Split(file.Name(), ".")
info.Extension = split[len(split) - 1]
}
fileList = append(fileList, info)
}
return Directory{
Path: rp,
Files: fileList,
}
}
func (dp *DiskProvider) ViewFile(path string) string {
return strings.Join([]string{dp.Location,path}, "/")
}
func (dp *DiskProvider) SaveFile(contents []byte, path string) bool {
err := ioutil.WriteFile(path, contents, 0600)
if err != nil {
return false
}
return true
}