package gowebdav | |
import ( | |
"fmt" | |
"os" | |
"time" | |
) | |
// File is our structure for a given file | |
type File struct { | |
path string | |
name string | |
contentType string | |
size int64 | |
modified time.Time | |
etag string | |
isdir bool | |
} | |
// Path returns the full path of a file | |
func (f File) Path() string { | |
return f.path | |
} | |
// Name returns the name of a file | |
func (f File) Name() string { | |
return f.name | |
} | |
// ContentType returns the content type of a file | |
func (f File) ContentType() string { | |
return f.contentType | |
} | |
// Size returns the size of a file | |
func (f File) Size() int64 { | |
return f.size | |
} | |
// Mode will return the mode of a given file | |
func (f File) Mode() os.FileMode { | |
// TODO check webdav perms | |
if f.isdir { | |
return 0775 | os.ModeDir | |
} | |
return 0664 | |
} | |
// ModTime returns the modified time of a file | |
func (f File) ModTime() time.Time { | |
return f.modified | |
} | |
// ETag returns the ETag of a file | |
func (f File) ETag() string { | |
return f.etag | |
} | |
// IsDir let us see if a given file is a directory or not | |
func (f File) IsDir() bool { | |
return f.isdir | |
} | |
// Sys ???? | |
func (f File) Sys() interface{} { | |
return nil | |
} | |
// String lets us see file information | |
func (f File) String() string { | |
if f.isdir { | |
return fmt.Sprintf("Dir : '%s' - '%s'", f.path, f.name) | |
} | |
return fmt.Sprintf("File: '%s' SIZE: %d MODIFIED: %s ETAG: %s CTYPE: %s", f.path, f.size, f.modified.String(), f.etag, f.contentType) | |
} | |