package ctrl import ( "encoding/base64" "hash/fnv" . "github.com/mickael-kerjean/filestash/server/common" "github.com/mickael-kerjean/filestash/server/model" "io" "net/http" "path/filepath" "strings" "strconv" "time" ) type FileInfo struct { Name string `json:"name"` Type string `json:"type"` Size int64 `json:"size"` Time int64 `json:"time"` } func FileLs(ctx App, res http.ResponseWriter, req *http.Request) { if model.CanRead(&ctx) == false { if model.CanUpload(&ctx) == false { SendErrorResult(res, NewError("Permission denied", 403)) return } SendSuccessResults(res, make([]FileInfo, 0)) return } path, err := pathBuilder(ctx, req.URL.Query().Get("path")) if err != nil { SendErrorResult(res, err) return } entries, err := ctx.Backend.Ls(path) if err != nil { SendErrorResult(res, err) return } files := make([]FileInfo, len(entries)) etagger := fnv.New32() etagger.Write([]byte(path + strconv.Itoa(len(entries)))) for i:=0; i