map: Support numeric and bool types with Caddyfile

Based on caddyserver/website#221
This commit is contained in:
Matthew Holt 2022-03-17 17:53:32 -06:00
parent 4e9fbee1e2
commit 93c99f6734
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5

View File

@ -15,6 +15,7 @@
package maphandler
import (
"strconv"
"strings"
"github.com/caddyserver/caddy/v2/caddyconfig/httpcaddyfile"
@ -78,7 +79,7 @@ func parseCaddyfile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error)
if out == "-" {
outs = append(outs, nil)
} else {
outs = append(outs, out)
outs = append(outs, specificType(out))
}
}
@ -107,3 +108,16 @@ func parseCaddyfile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error)
return handler, nil
}
func specificType(v string) interface{} {
if num, err := strconv.Atoi(v); err == nil {
return num
}
if num, err := strconv.ParseFloat(v, 64); err == nil {
return num
}
if bool, err := strconv.ParseBool(v); err == nil {
return bool
}
return v
}