mirror of
https://github.com/filebrowser/filebrowser.git
synced 2025-05-08 19:22:57 +00:00

License: MIT Signed-off-by: Henrique Dias <hacdias@gmail.com> Former-commit-id: a44ebfc7a5687b5f51f0ff791335f66ab9f2e8e0 [formerly 9a044fadd8f2ebbb7dbb773273799c26a797f513] [formerly 7f374d016eaf756cfce215dd16a2274bbabe1915 [formerly f55f205ced82d7e05e0ffc158b302b5300409769]] Former-commit-id: 31015ddc5f4fc28c895743f6fe9dcf5488bb4b01 [formerly e439027304a1e49667fafde011e07d043ef0d2ee] Former-commit-id: 0394c60358673b56991364260b1cbe41fa457593
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package http
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/filebrowser/filebrowser/v2/files"
|
|
)
|
|
|
|
var withHashFile = func(fn handleFunc) handleFunc {
|
|
return func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
|
|
link, err := d.store.Share.GetByHash(r.URL.Path)
|
|
if err != nil {
|
|
return errToStatus(err), err
|
|
}
|
|
|
|
user, err := d.store.Users.Get(d.settings.Scope, link.UserID)
|
|
if err != nil {
|
|
return errToStatus(err), err
|
|
}
|
|
|
|
d.user = user
|
|
|
|
file, err := files.NewFileInfo(files.FileOptions{
|
|
Fs: d.user.Fs,
|
|
Path: link.Path,
|
|
Modify: d.user.Perm.Modify,
|
|
Expand: false,
|
|
Checker: d,
|
|
})
|
|
if err != nil {
|
|
return errToStatus(err), err
|
|
}
|
|
|
|
d.raw = file
|
|
return fn(w, r, d)
|
|
}
|
|
}
|
|
|
|
var publicShareHandler = withHashFile(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
|
|
return renderJSON(w, r, d.raw)
|
|
})
|
|
|
|
var publicDlHandler = withHashFile(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
|
|
file := d.raw.(*files.FileInfo)
|
|
if !file.IsDir {
|
|
return rawFileHandler(w, r, file)
|
|
}
|
|
|
|
return rawDirHandler(w, r, d, file)
|
|
})
|