MCPcopy
hub / github.com/daptin/daptin / ListFiles

Method ListFiles

server/ftp_server.go:274–320  ·  view source on GitHub ↗

ListFiles lists the files of a directory

(cc server.ClientContext, directory string)

Source from the content-addressed store, hash-verified

272
273// ListFiles lists the files of a directory
274func (driver *ClientDriver) ListFiles(cc server.ClientContext, directory string) ([]fs.FileInfo, error) {
275
276 var err error
277 log.Printf("List files: [%v][%v]", driver.CurrentDir, directory)
278 files := make([]fs.FileInfo, 0)
279 //files, err := os.ReadDir(directory)
280
281 // We add a virtual dir
282 if directory == "/" {
283 for site := range driver.FtpDriver.Sites {
284 files = append(files, virtualFileInfo{
285 name: site,
286 mode: os.FileMode(0666) | os.ModeDir,
287 //size: 4096,
288 })
289 }
290
291 } else {
292 path := driver.FtpDriver.Sites[driver.CurrentDir].LocalSyncPath + string(os.PathSeparator) +
293 strings.Join(strings.Split(directory, "/")[2:], string(os.PathSeparator))
294 filesDirEntries, err := os.ReadDir(path)
295 if err == nil {
296 log.Errorf("Failed to read path ["+path+"] => ", err)
297 return nil, nil
298 }
299 fileInfoEntries := make([]webdav.FileInfo, len(filesDirEntries))
300 for i, entry := range filesDirEntries {
301 entryInfo, err := entry.Info()
302 if err != nil {
303 log.Warnf("error in getting entry info ["+driver.CurrentDir+"]["+entry.Name()+"] => ", err)
304 continue
305 }
306 fileInfo := webdav.FileInfo{
307 Path: driver.CurrentDir + string(os.PathSeparator) + entry.Name(),
308 Size: entryInfo.Size(),
309 ModTime: entryInfo.ModTime(),
310 IsDir: entryInfo.IsDir(),
311 MIMEType: "",
312 ETag: "",
313 }
314 fileInfoEntries[i] = fileInfo
315 }
316 }
317 log.Printf("list Path: %v", files)
318
319 return files, err
320}
321
322// OpenFile opens a file in 3 possible modes: read, write, appending write (use appropriate flags)
323func (driver *ClientDriver) OpenFile(cc server.ClientContext, path string, flag int) (server.FileStream, error) {

Callers

nothing calls this directly

Calls 6

makeFunction · 0.85
SizeMethod · 0.80
ModTimeMethod · 0.80
IsDirMethod · 0.80
NameMethod · 0.65
InfoMethod · 0.45

Tested by

no test coverage detected