3
0

Fix multival (string) request param parsing

This commit is contained in:
Denis Arh
2019-06-20 11:03:46 +02:00
parent 05429d1192
commit b7f78cdf91
11 changed files with 66 additions and 0 deletions
+1
View File
@@ -98,6 +98,7 @@ usort($apis, function($a, $b) {
$parsers = array(
"uint64" => "parseUInt64",
"[]uint64" => "parseUInt64A",
"[]string" => "parseStrings",
"int" => "parseInt",
"uint" => "parseUint",
"bool" => "parseBool",
+4
View File
@@ -84,6 +84,10 @@ func (r *NotificationEmailSend) Fill(req *http.Request) (err error) {
post[name] = string(param[0])
}
r.To = parseStrings(req.Form["to"])
r.Cc = parseStrings(req.Form["cc"])
if val, ok := post["replyTo"]; ok {
r.ReplyTo = val
}
+2
View File
@@ -430,6 +430,8 @@ func (r *PageReorder) Fill(req *http.Request) (err error) {
r.SelfID = parseUInt64(chi.URLParam(req, "selfID"))
r.NamespaceID = parseUInt64(chi.URLParam(req, "namespaceID"))
r.PageIDs = parseStrings(req.Form["pageIDs"])
return err
}
+6
View File
@@ -165,6 +165,9 @@ func (r *TriggerCreate) Fill(req *http.Request) (err error) {
if val, ok := post["name"]; ok {
r.Name = val
}
r.Actions = parseStrings(req.Form["actions"])
if val, ok := post["enabled"]; ok {
r.Enabled = parseBool(val)
}
@@ -302,6 +305,9 @@ func (r *TriggerUpdate) Fill(req *http.Request) (err error) {
if val, ok := post["name"]; ok {
r.Name = val
}
r.Actions = parseStrings(req.Form["actions"])
if val, ok := post["enabled"]; ok {
r.Enabled = parseBool(val)
}
+4
View File
@@ -79,6 +79,10 @@ func parseUInt64A(values []string) []uint64 {
return result
}
func parseStrings(values []string) []string {
return values
}
// parseUInt64 parses a string to uint64
func parseBool(s string) bool {
return truthy.MatchString(strings.ToLower(s))
+4
View File
@@ -143,6 +143,8 @@ func (r *ChannelCreate) Fill(req *http.Request) (err error) {
r.Type = val
}
r.Members = parseStrings(req.Form["members"])
return err
}
@@ -640,6 +642,8 @@ func (r *ChannelInvite) Fill(req *http.Request) (err error) {
r.ChannelID = parseUInt64(chi.URLParam(req, "channelID"))
r.UserID = parseStrings(req.Form["userID"])
return err
}
+2
View File
@@ -143,6 +143,8 @@ func (r *MessageExecuteCommand) Fill(req *http.Request) (err error) {
r.Input = val
}
r.Params = parseStrings(req.Form["params"])
return err
}
+31
View File
@@ -96,6 +96,12 @@ func (r *SearchMessages) Fill(req *http.Request) (err error) {
post[name] = string(param[0])
}
if val, ok := urlQuery["channelID[]"]; ok {
r.ChannelID = parseStrings(val)
} else if val, ok = urlQuery["channelID"]; ok {
r.ChannelID = parseStrings(val)
}
if val, ok := get["afterMessageID"]; ok {
r.AfterMessageID = parseUInt64(val)
}
@@ -108,6 +114,25 @@ func (r *SearchMessages) Fill(req *http.Request) (err error) {
if val, ok := get["toMessageID"]; ok {
r.ToMessageID = parseUInt64(val)
}
if val, ok := urlQuery["threadID[]"]; ok {
r.ThreadID = parseStrings(val)
} else if val, ok = urlQuery["threadID"]; ok {
r.ThreadID = parseStrings(val)
}
if val, ok := urlQuery["userID[]"]; ok {
r.UserID = parseStrings(val)
} else if val, ok = urlQuery["userID"]; ok {
r.UserID = parseStrings(val)
}
if val, ok := urlQuery["type[]"]; ok {
r.Type = parseStrings(val)
} else if val, ok = urlQuery["type"]; ok {
r.Type = parseStrings(val)
}
if val, ok := get["pinnedOnly"]; ok {
r.PinnedOnly = parseBool(val)
}
@@ -174,6 +199,12 @@ func (r *SearchThreads) Fill(req *http.Request) (err error) {
post[name] = string(param[0])
}
if val, ok := urlQuery["channelID[]"]; ok {
r.ChannelID = parseStrings(val)
} else if val, ok = urlQuery["channelID"]; ok {
r.ChannelID = parseStrings(val)
}
if val, ok := get["limit"]; ok {
r.Limit = parseUint(val)
}
+4
View File
@@ -65,6 +65,10 @@ func parseUInt64A(values []string) []uint64 {
return result
}
func parseStrings(values []string) []string {
return values
}
// parseUInt64 parses a string to uint64
func parseBool(s string) bool {
return truthy.MatchString(strings.ToLower(s))
+4
View File
@@ -133,6 +133,8 @@ func (r *RoleCreate) Fill(req *http.Request) (err error) {
r.Name = val
}
r.Members = parseStrings(req.Form["members"])
return err
}
@@ -191,6 +193,8 @@ func (r *RoleUpdate) Fill(req *http.Request) (err error) {
r.Name = val
}
r.Members = parseStrings(req.Form["members"])
return err
}
+4
View File
@@ -56,6 +56,10 @@ func parseUInt64A(values []string) []uint64 {
return result
}
func parseStrings(values []string) []string {
return values
}
// parseUInt64 parses a string to uint64
func parseBool(s string) bool {
return truthy.MatchString(strings.ToLower(s))