add ParseUri() expr helper (#994)

This commit is contained in:
blotus 2021-10-08 16:50:31 +02:00 committed by GitHub
parent 6bd80dbb86
commit 2bc9f33e12
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 91 additions and 0 deletions

View file

@ -4,6 +4,7 @@ import (
"bufio"
"fmt"
"net"
"net/url"
"os"
"path"
"regexp"
@ -42,6 +43,7 @@ func GetExprEnv(ctx map[string]interface{}) map[string]interface{} {
"Upper": Upper,
"IpInRange": IpInRange,
"TimeNow": TimeNow,
"ParseUri": ParseUri,
}
for k, v := range ctx {
ExprLib[k] = v
@ -142,6 +144,25 @@ func TimeNow() string {
return time.Now().Format(time.RFC3339)
}
func ParseUri(uri string) map[string][]string {
ret := make(map[string][]string)
u, err := url.Parse(uri)
if err != nil {
log.Errorf("Could not parse URI: %s", err)
return ret
}
parsed, err := url.ParseQuery(u.RawQuery)
if err != nil {
log.Errorf("Could not parse query uri : %s", err)
return ret
}
for k, v := range parsed {
ret[k] = v
}
return ret
}
func KeyExists(key string, dict map[string]interface{}) bool {
_, ok := dict[key]
return ok