Moved successive and filter arguments to exclusively query parsms
This commit is contained in:
parent
159207dd5f
commit
b51c8afc15
26
cmd/files.go
26
cmd/files.go
|
@ -137,17 +137,12 @@ func getFiles(m map[string][]string, path, filter string) (map[string][]string,
|
||||||
switch {
|
switch {
|
||||||
case !Recursive && info.IsDir() && p != path:
|
case !Recursive && info.IsDir() && p != path:
|
||||||
return filepath.SkipDir
|
return filepath.SkipDir
|
||||||
case Filter != "" && !info.IsDir():
|
|
||||||
m, err = appendPaths(m, p, Filter)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
case filter != "" && !info.IsDir():
|
case filter != "" && !info.IsDir():
|
||||||
m, err = appendPaths(m, p, filter)
|
m, err = appendPaths(m, p, filter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
default:
|
case !info.IsDir():
|
||||||
m, err = appendPaths(m, p, "")
|
m, err = appendPaths(m, p, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -190,17 +185,19 @@ func prepareDirectory(directory []string) []string {
|
||||||
_, last := filepath.Split(directory[len(directory)-1])
|
_, last := filepath.Split(directory[len(directory)-1])
|
||||||
last = cleanFilename(last)
|
last = cleanFilename(last)
|
||||||
|
|
||||||
|
fmt.Printf("Comparing %v to %v\n", first, last)
|
||||||
|
|
||||||
if first == last {
|
if first == last {
|
||||||
d := append([]string{}, directory[0])
|
d := append([]string{}, directory[0])
|
||||||
|
fmt.Printf("Appending %v to empty directory\n", d)
|
||||||
return d
|
return d
|
||||||
} else {
|
} else {
|
||||||
|
fmt.Printf("Returning directory as-is\n")
|
||||||
return directory
|
return directory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func prepareDirectories(m map[string][]string) []string {
|
func prepareDirectories(m map[string][]string, successive string) []string {
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
|
|
||||||
directories := []string{}
|
directories := []string{}
|
||||||
|
|
||||||
keys := make([]string, len(m))
|
keys := make([]string, len(m))
|
||||||
|
@ -212,7 +209,8 @@ func prepareDirectories(m map[string][]string) []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case Successive:
|
case successive != "":
|
||||||
|
fmt.Println("Successive")
|
||||||
for i := 0; i < len(keys); i++ {
|
for i := 0; i < len(keys); i++ {
|
||||||
directories = append(directories, prepareDirectory(m[keys[i]])...)
|
directories = append(directories, prepareDirectory(m[keys[i]])...)
|
||||||
}
|
}
|
||||||
|
@ -225,13 +223,17 @@ func prepareDirectories(m map[string][]string) []string {
|
||||||
return directories
|
return directories
|
||||||
}
|
}
|
||||||
|
|
||||||
func pickFile(args []string, filter string) (string, error) {
|
func pickFile(args []string, filter, successive string) (string, error) {
|
||||||
fileMap, err := getFileList(args, filter)
|
fileMap, err := getFileList(args, filter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
fileList := prepareDirectories(fileMap)
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
|
||||||
|
fileList := prepareDirectories(fileMap, successive)
|
||||||
|
|
||||||
|
rand.Shuffle(len(fileList), func(i, j int) { fileList[i], fileList[j] = fileList[j], fileList[i] })
|
||||||
|
|
||||||
for i := 0; i < len(fileList); i++ {
|
for i := 0; i < len(fileList); i++ {
|
||||||
filePath := fileList[i]
|
filePath := fileList[i]
|
||||||
|
|
|
@ -10,10 +10,8 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Filter string
|
|
||||||
var Port int
|
var Port int
|
||||||
var Recursive bool
|
var Recursive bool
|
||||||
var Successive bool
|
|
||||||
var Verbose bool
|
var Verbose bool
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
var rootCmd = &cobra.Command{
|
||||||
|
@ -33,10 +31,8 @@ func Execute() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rootCmd.Flags().StringVarP(&Filter, "filter", "f", "", "only display images matching specified pattern (case-insensitive)")
|
|
||||||
rootCmd.Flags().IntVarP(&Port, "port", "p", 8080, "port to listen on")
|
rootCmd.Flags().IntVarP(&Port, "port", "p", 8080, "port to listen on")
|
||||||
rootCmd.Flags().BoolVarP(&Recursive, "recursive", "r", false, "recurse into subdirectories")
|
rootCmd.Flags().BoolVarP(&Recursive, "recursive", "r", false, "recurse into subdirectories")
|
||||||
rootCmd.Flags().BoolVarP(&Successive, "successive", "s", false, "load the next sequential file, if possible")
|
|
||||||
rootCmd.Flags().BoolVarP(&Verbose, "verbose", "v", false, "log accessed files to stdout")
|
rootCmd.Flags().BoolVarP(&Verbose, "verbose", "v", false, "log accessed files to stdout")
|
||||||
rootCmd.Flags().SetInterspersed(true)
|
rootCmd.Flags().SetInterspersed(true)
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Version = "0.11.0"
|
var Version = "0.12.0"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rootCmd.AddCommand(versionCmd)
|
rootCmd.AddCommand(versionCmd)
|
||||||
|
|
21
cmd/web.go
21
cmd/web.go
|
@ -54,7 +54,7 @@ func serveHtml(w http.ResponseWriter, r http.Request, filePath string) error {
|
||||||
htmlBody += `</title>
|
htmlBody += `</title>
|
||||||
</head>
|
</head>
|
||||||
<body>`
|
<body>`
|
||||||
htmlBody += fmt.Sprintf(`"<a href="/?filter=%v"><img src="`, r.URL.Query().Get("filter"))
|
htmlBody += fmt.Sprintf(`"<a href="/?f=%v&s=%v"><img src="`, r.URL.Query().Get("f"), r.URL.Query().Get("s"))
|
||||||
htmlBody += PREFIX + filePath
|
htmlBody += PREFIX + filePath
|
||||||
htmlBody += `"></img></a>
|
htmlBody += `"></img></a>
|
||||||
</body>
|
</body>
|
||||||
|
@ -138,10 +138,11 @@ func serveHtmlHandler(paths []string) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
refererUri := stripQueryParam(refererToUri(r.Referer()))
|
refererUri := stripQueryParam(refererToUri(r.Referer()))
|
||||||
|
|
||||||
filter := r.URL.Query().Get("filter")
|
filter := r.URL.Query().Get("f")
|
||||||
|
successive := r.URL.Query().Get("s")
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case r.URL.Path == "/" && Successive && refererUri != "":
|
case r.URL.Path == "/" && successive != "" && refererUri != "":
|
||||||
query, err := url.QueryUnescape(refererUri)
|
query, err := url.QueryUnescape(refererUri)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
@ -153,7 +154,7 @@ func serveHtmlHandler(paths []string) http.HandlerFunc {
|
||||||
}
|
}
|
||||||
|
|
||||||
if filePath == "" {
|
if filePath == "" {
|
||||||
filePath, err = pickFile(paths, filter)
|
filePath, err = pickFile(paths, filter, successive)
|
||||||
switch {
|
switch {
|
||||||
case err != nil && err == ErrNoImagesFound:
|
case err != nil && err == ErrNoImagesFound:
|
||||||
http.NotFound(w, r)
|
http.NotFound(w, r)
|
||||||
|
@ -168,10 +169,10 @@ func serveHtmlHandler(paths []string) http.HandlerFunc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newUrl := fmt.Sprintf("%v%v?filter=%v", r.URL.Host, filePath, filter)
|
newUrl := fmt.Sprintf("%v%v?f=%v&s=%v", r.URL.Host, filePath, filter, successive)
|
||||||
http.Redirect(w, r, newUrl, http.StatusSeeOther)
|
http.Redirect(w, r, newUrl, http.StatusSeeOther)
|
||||||
case r.URL.Path == "/" && Successive && refererUri == "":
|
case r.URL.Path == "/" && successive != "" && refererUri == "":
|
||||||
filePath, err := pickFile(paths, filter)
|
filePath, err := pickFile(paths, filter, successive)
|
||||||
switch {
|
switch {
|
||||||
case err != nil && err == ErrNoImagesFound:
|
case err != nil && err == ErrNoImagesFound:
|
||||||
http.NotFound(w, r)
|
http.NotFound(w, r)
|
||||||
|
@ -185,10 +186,10 @@ func serveHtmlHandler(paths []string) http.HandlerFunc {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newUrl := fmt.Sprintf("%v%v?filter=%v", r.URL.Host, filePath, filter)
|
newUrl := fmt.Sprintf("%v%v?f=%v&s=%v", r.URL.Host, filePath, filter, successive)
|
||||||
http.Redirect(w, r, newUrl, http.StatusSeeOther)
|
http.Redirect(w, r, newUrl, http.StatusSeeOther)
|
||||||
case r.URL.Path == "/":
|
case r.URL.Path == "/":
|
||||||
filePath, err := pickFile(paths, filter)
|
filePath, err := pickFile(paths, filter, successive)
|
||||||
switch {
|
switch {
|
||||||
case err != nil && err == ErrNoImagesFound:
|
case err != nil && err == ErrNoImagesFound:
|
||||||
http.NotFound(w, r)
|
http.NotFound(w, r)
|
||||||
|
@ -197,7 +198,7 @@ func serveHtmlHandler(paths []string) http.HandlerFunc {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newUrl := fmt.Sprintf("%v%v?filter=%v", r.URL.Host, filePath, filter)
|
newUrl := fmt.Sprintf("%v%v?f=%v&s=%v", r.URL.Host, filePath, filter, successive)
|
||||||
http.Redirect(w, r, newUrl, http.StatusSeeOther)
|
http.Redirect(w, r, newUrl, http.StatusSeeOther)
|
||||||
default:
|
default:
|
||||||
filePath := r.URL.Path
|
filePath := r.URL.Path
|
||||||
|
|
Loading…
Reference in New Issue