aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-03-19 17:25:52 +0100
committerSimon Ser <contact@emersion.fr>2020-03-19 17:25:52 +0100
commit9eac0b453a21918f7533e78aa0fbb4d07cdbf474 (patch)
tree6fee5667df786f17c3478817dec2878a207814c8
parentb61e40f36309e94541a6de3aff6d7356e9d7f99f (diff)
downloadalps-9eac0b453a21918f7533e78aa0fbb4d07cdbf474.tar.gz
alps-9eac0b453a21918f7533e78aa0fbb4d07cdbf474.zip
plugins/base: allow to specify move/flag params via query
-rw-r--r--plugins/base/routes.go21
1 files changed, 19 insertions, 2 deletions
diff --git a/plugins/base/routes.go b/plugins/base/routes.go
index d2bfe73..0782159 100644
--- a/plugins/base/routes.go
+++ b/plugins/base/routes.go
@@ -669,6 +669,12 @@ func handleMove(ctx *koushin.Context) error {
}
to := ctx.FormValue("to")
+ if to == "" {
+ to = ctx.QueryParam("to")
+ }
+ if to == "" {
+ return echo.NewHTTPError(http.StatusBadRequest, "missing 'to' form parameter")
+ }
err = ctx.Session.DoIMAP(func(c *imapclient.Client) error {
mc := imapmove.NewClient(c)
@@ -751,17 +757,28 @@ func handleSetFlags(ctx *koushin.Context) error {
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err)
}
+
uids, err := parseUidList(formParams["uids"])
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err)
}
+
flags, ok := formParams["flags"]
if !ok {
- return echo.NewHTTPError(http.StatusBadRequest, "missing 'flags' form values")
+ flagsStr := ctx.QueryParam("to")
+ if flagsStr == "" {
+ return echo.NewHTTPError(http.StatusBadRequest, "missing 'flags' form parameter")
+ }
+ flags = strings.Fields(flagsStr)
+ }
+
+ actionStr := ctx.FormValue("action")
+ if actionStr == "" {
+ actionStr = ctx.QueryParam("action")
}
var op imap.FlagsOp
- switch ctx.FormValue("action") {
+ switch actionStr {
case "", "set":
op = imap.SetFlags
case "add":