53 lines
1017 B
Go
53 lines
1017 B
Go
// ============================================
|
|
// handlers/traffic_handlers.go - COMPLET
|
|
// ============================================
|
|
|
|
package handlers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strconv"
|
|
)
|
|
|
|
// getFloatFromMap récupère un float64 depuis une map avec différents types
|
|
func getFloatFromMap(m map[string]interface{}, key string) (float64, bool) {
|
|
value, exists := m[key]
|
|
if !exists || value == nil {
|
|
return 0, false
|
|
}
|
|
|
|
switch v := value.(type) {
|
|
case float64:
|
|
return v, true
|
|
case float32:
|
|
return float64(v), true
|
|
case int:
|
|
return float64(v), true
|
|
case int64:
|
|
return float64(v), true
|
|
case int32:
|
|
return float64(v), true
|
|
case json.Number:
|
|
f, err := v.Float64()
|
|
if err != nil {
|
|
return 0, false
|
|
}
|
|
return f, true
|
|
case string:
|
|
f, err := strconv.ParseFloat(v, 64)
|
|
if err != nil {
|
|
return 0, false
|
|
}
|
|
return f, true
|
|
case []byte:
|
|
s := string(v)
|
|
f, err := strconv.ParseFloat(s, 64)
|
|
if err != nil {
|
|
return 0, false
|
|
}
|
|
return f, true
|
|
default:
|
|
return 0, false
|
|
}
|
|
}
|