You've already forked filebrowser
mirror of
https://github.com/filebrowser/filebrowser.git
synced 2025-11-26 14:25:26 +08:00
updates
Former-commit-id: 54b88552d11f2151a165dba9debb4657dfa56cf8 [formerly 0ce53651a8e9660f9d5f977295f553b5b1d1e93a] [formerly 7ebca3a8896222091c95af86a9cf1d12550b8b76 [formerly 174330929a]]
Former-commit-id: 993d0cdb239f9969587d13a11ee8469fa8b91287 [formerly c22c911f944dd8d6597ab95589842d3c68d34869]
Former-commit-id: 44ed259fe50a085e8bcace3f1f14caafec97ce66
This commit is contained in:
37
file.go
37
file.go
@@ -27,8 +27,8 @@ var (
|
||||
errInvalidOption = errors.New("Invalid option")
|
||||
)
|
||||
|
||||
// file contains the information about a particular file or directory.
|
||||
type file struct {
|
||||
// File contains the information about a particular file or directory.
|
||||
type File struct {
|
||||
// Indicates the Kind of view on the front-end (listing, editor or preview).
|
||||
Kind string `json:"kind"`
|
||||
// The name of the file.
|
||||
@@ -63,7 +63,7 @@ type file struct {
|
||||
// A listing is the context used to fill out a template.
|
||||
type listing struct {
|
||||
// The items (files and folders) in the path.
|
||||
Items []*file `json:"items"`
|
||||
Items []*File `json:"items"`
|
||||
// The number of directories in the listing.
|
||||
NumDirs int `json:"numDirs"`
|
||||
// The number of files (items that aren't directories) in the listing.
|
||||
@@ -76,12 +76,12 @@ type listing struct {
|
||||
Display string `json:"display"`
|
||||
}
|
||||
|
||||
// getInfo gets the file information and, in case of error, returns the
|
||||
// GetInfo gets the file information and, in case of error, returns the
|
||||
// respective HTTP error code
|
||||
func getInfo(url *url.URL, c *FileManager, u *User) (*file, error) {
|
||||
func GetInfo(url *url.URL, c *FileManager, u *User) (*File, error) {
|
||||
var err error
|
||||
|
||||
i := &file{
|
||||
i := &File{
|
||||
URL: "/files" + url.String(),
|
||||
VirtualPath: url.Path,
|
||||
Path: filepath.Join(string(u.FileSystem), url.Path),
|
||||
@@ -106,11 +106,11 @@ func getInfo(url *url.URL, c *FileManager, u *User) (*file, error) {
|
||||
return i, nil
|
||||
}
|
||||
|
||||
// getListing gets the information about a specific directory and its files.
|
||||
func (i *file) getListing(c *RequestContext, r *http.Request) error {
|
||||
// GetListing gets the information about a specific directory and its files.
|
||||
func (i *File) GetListing(u *User, r *http.Request) error {
|
||||
// Gets the directory information using the Virtual File System of
|
||||
// the user configuration.
|
||||
f, err := c.User.FileSystem.OpenFile(c.File.VirtualPath, os.O_RDONLY, 0)
|
||||
f, err := u.FileSystem.OpenFile(i.VirtualPath, os.O_RDONLY, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -123,7 +123,7 @@ func (i *file) getListing(c *RequestContext, r *http.Request) error {
|
||||
}
|
||||
|
||||
var (
|
||||
fileinfos []*file
|
||||
fileinfos []*File
|
||||
dirCount, fileCount int
|
||||
)
|
||||
|
||||
@@ -134,7 +134,7 @@ func (i *file) getListing(c *RequestContext, r *http.Request) error {
|
||||
|
||||
for _, f := range files {
|
||||
name := f.Name()
|
||||
allowed := c.User.Allowed("/" + name)
|
||||
allowed := u.Allowed("/" + name)
|
||||
|
||||
if !allowed {
|
||||
continue
|
||||
@@ -150,7 +150,7 @@ func (i *file) getListing(c *RequestContext, r *http.Request) error {
|
||||
// Absolute URL
|
||||
url := url.URL{Path: baseurl + name}
|
||||
|
||||
i := &file{
|
||||
i := &File{
|
||||
Name: f.Name(),
|
||||
Size: f.Size(),
|
||||
ModTime: f.ModTime(),
|
||||
@@ -175,8 +175,8 @@ func (i *file) getListing(c *RequestContext, r *http.Request) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// getEditor gets the editor based on a Info struct
|
||||
func (i *file) getEditor() error {
|
||||
// GetEditor gets the editor based on a Info struct
|
||||
func (i *File) GetEditor() error {
|
||||
i.Language = editorLanguage(i.Extension)
|
||||
// If the editor will hold only content, leave now.
|
||||
if editorMode(i.Language) == "content" {
|
||||
@@ -205,7 +205,7 @@ func (i *file) getEditor() error {
|
||||
|
||||
// GetFileType obtains the mimetype and converts it to a simple
|
||||
// type nomenclature.
|
||||
func (i *file) GetFileType(checkContent bool) error {
|
||||
func (i *File) GetFileType(checkContent bool) error {
|
||||
var content []byte
|
||||
var err error
|
||||
|
||||
@@ -283,7 +283,8 @@ End:
|
||||
return nil
|
||||
}
|
||||
|
||||
func (i file) Checksum(kind string) (string, error) {
|
||||
// Checksum retrieves the checksum of a file.
|
||||
func (i File) Checksum(algo string) (string, error) {
|
||||
file, err := os.Open(i.Path)
|
||||
if err != nil {
|
||||
return "", err
|
||||
@@ -293,7 +294,7 @@ func (i file) Checksum(kind string) (string, error) {
|
||||
|
||||
var h hash.Hash
|
||||
|
||||
switch kind {
|
||||
switch algo {
|
||||
case "md5":
|
||||
h = md5.New()
|
||||
case "sha1":
|
||||
@@ -315,7 +316,7 @@ func (i file) Checksum(kind string) (string, error) {
|
||||
}
|
||||
|
||||
// CanBeEdited checks if the extension of a file is supported by the editor
|
||||
func (i file) CanBeEdited() bool {
|
||||
func (i File) CanBeEdited() bool {
|
||||
return i.Type == "text"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user