When mangaling JSON to parse durations do a case insensitive key lookup

This commit is contained in:
Tarrant 2014-04-24 19:44:27 -07:00
parent 2874058d5a
commit 73a9c1389e
2 changed files with 28 additions and 6 deletions

View File

@ -118,10 +118,17 @@ func (s *HTTPServer) AgentRegisterService(resp http.ResponseWriter, req *http.Re
if !ok {
return nil
}
check, ok := rawMap["check"]
if !ok {
var check interface{}
for k, v := range rawMap {
if strings.ToLower(k) == "check" {
check = v
}
}
if check == nil {
return nil
}
return FixupCheckType(check)
}
if err := decodeBody(req, &args, decodeCB); err != nil {

View File

@ -265,23 +265,38 @@ func FixupCheckType(raw interface{}) error {
if !ok {
return nil
}
if ttl, ok := rawMap["ttl"]; ok {
var ttlKey string
for k, _ := range rawMap {
if strings.ToLower(k) == "ttl" {
ttlKey = k
}
}
var intervalKey string
for k, _ := range rawMap {
if strings.ToLower(k) == "interval" {
intervalKey = k
}
}
if ttl, ok := rawMap[ttlKey]; ok {
ttlS, ok := ttl.(string)
if ok {
if dur, err := time.ParseDuration(ttlS); err != nil {
return err
} else {
rawMap["ttl"] = dur
rawMap[ttlKey] = dur
}
}
}
if interval, ok := rawMap["interval"]; ok {
if interval, ok := rawMap[intervalKey]; ok {
intervalS, ok := interval.(string)
if ok {
if dur, err := time.ParseDuration(intervalS); err != nil {
return err
} else {
rawMap["interval"] = dur
rawMap[intervalKey] = dur
}
}
}