29 lines
		
	
	
		
			586 B
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			586 B
		
	
	
	
		
			Go
		
	
	
	
|  | package http | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"net/http" | ||
|  | 	"os" | ||
|  | 
 | ||
|  | 	"github.com/filebrowser/filebrowser/v2/search" | ||
|  | ) | ||
|  | 
 | ||
|  | var searchHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { | ||
|  | 	response := []map[string]interface{}{} | ||
|  | 	query := r.URL.Query().Get("query") | ||
|  | 
 | ||
|  | 	err := search.Search(d.user.Fs, r.URL.Path, query, d, func(path string, f os.FileInfo) error { | ||
|  | 		response = append(response, map[string]interface{}{ | ||
|  | 			"dir":  f.IsDir(), | ||
|  | 			"path": path, | ||
|  | 		}) | ||
|  | 
 | ||
|  | 		return nil | ||
|  | 	}) | ||
|  | 
 | ||
|  | 	if err != nil { | ||
|  | 		return http.StatusInternalServerError, err | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return renderJSON(w, r, response) | ||
|  | }) |