cmd/syncthing: Improve "cli debug file" handling

Proper URL encoding, and return a sensible error when it's not found.
This commit is contained in:
Jakob Borg 2021-06-05 11:18:59 +02:00
parent 6494a9332d
commit 0e9d2a13af
3 changed files with 11 additions and 2 deletions

View File

@ -134,9 +134,11 @@ func (c *apiClient) Post(url, body string) (*http.Response, error) {
return c.Do(request)
}
var errNotFound = errors.New("invalid endpoint or API call")
func checkResponse(response *http.Response) error {
if response.StatusCode == http.StatusNotFound {
return errors.New("invalid endpoint or API call")
return errNotFound
} else if response.StatusCode == http.StatusUnauthorized {
return errors.New("invalid API key")
} else if response.StatusCode != http.StatusOK {

View File

@ -8,6 +8,7 @@ package cli
import (
"fmt"
"net/url"
"github.com/urfave/cli"
)
@ -35,7 +36,10 @@ var debugCommand = cli.Command{
func debugFile() cli.ActionFunc {
return func(c *cli.Context) error {
return indexDumpOutput(fmt.Sprintf("debug/file?folder=%v&file=%v", c.Args()[0], normalizePath(c.Args()[1])))(c)
query := make(url.Values)
query.Set("folder", c.Args()[0])
query.Set("file", normalizePath(c.Args()[1]))
return indexDumpOutput("debug/file?" + query.Encode())(c)
}
}

View File

@ -48,6 +48,9 @@ func indexDumpOutput(url string) cli.ActionFunc {
return err
}
response, err := client.Get(url)
if errors.Is(err, errNotFound) {
return errors.New("not found (debugging disabled or folder/file not in database)")
}
if err != nil {
return err
}