Add basic file stat & mimetype

This commit is contained in:
Dane Everitt
2019-04-07 13:47:14 -07:00
parent aef9521190
commit 91afa4d38e
3 changed files with 50 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package server
import (
"bytes"
"errors"
"github.com/gabriel-vasile/mimetype"
"go.uber.org/zap"
"io"
"io/ioutil"
@@ -186,4 +187,50 @@ func (fs *Filesystem) Readfile(p string) (io.Reader, error) {
}
return bytes.NewReader(b), nil
}
// Delete a file or folder from the system. If a folder location is passed in the
// folder and all of its contents are deleted.
func (fs *Filesystem) DeleteFile(p string) error {
cleaned, err := fs.SafePath(p)
if err != nil {
return err
}
return os.RemoveAll(cleaned)
}
// Defines the stat struct object.
type Stat struct {
Info *os.FileInfo
Mimetype string
}
// Stats a file or folder and returns the base stat object from go along with the
// MIME data that can be used for editing files.
func (fs *Filesystem) Stat(p string) (*Stat, error) {
cleaned, err := fs.SafePath(p)
if err != nil {
return nil, err
}
s, err := os.Stat(cleaned)
if err != nil {
return nil, err
}
var m = "inode/directory"
if !s.IsDir() {
m, _, err = mimetype.DetectFile(cleaned)
if err != nil {
return nil, err
}
}
st := &Stat{
Info: &s,
Mimetype: m,
}
return st, nil
}