filebrowser/backend/http/search.go

37 lines
1.0 KiB
Go
Raw Normal View History

package http
import (
2023-08-12 16:30:41 +00:00
"net/http"
"strings"
2023-08-12 22:21:31 +00:00
"github.com/gtsteffaniak/filebrowser/files"
"github.com/gtsteffaniak/filebrowser/settings"
)
var searchHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
response := []map[string]interface{}{}
query := r.URL.Query().Get("query")
2023-08-17 21:46:49 +00:00
// Retrieve the User-Agent and X-Auth headers from the request
sessionId := r.Header.Get("SessionId")
userScope := r.Header.Get("UserScope")
index := files.GetIndex(settings.Config.Server.Root)
combinedScope := strings.TrimPrefix(userScope+r.URL.Path, ".")
results, fileTypes := index.Search(query, combinedScope, sessionId)
for _, path := range results {
2023-07-13 02:23:29 +00:00
responseObj := map[string]interface{}{
2023-08-12 16:30:41 +00:00
"path": path,
2023-08-12 22:21:31 +00:00
"dir": true,
2023-07-13 02:23:29 +00:00
}
2023-08-12 22:21:31 +00:00
if _, ok := fileTypes[path]; ok {
responseObj["dir"] = false
for filterType, value := range fileTypes[path] {
if value {
responseObj[filterType] = value
}
}
2023-07-13 02:23:29 +00:00
}
2023-08-12 16:30:41 +00:00
response = append(response, responseObj)
}
return renderJSON(w, r, response)
2023-08-12 16:30:41 +00:00
})