refactor(core): разбить client.go (1678 строк) на 15 мелких модулей по зонам ответственности
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ===== Нормализация значений CFS-параметров =====
|
||||
|
||||
// buildMapFixedDefault строит JSON-объект из дефолтов sub-параметров map-fixed.
|
||||
func buildMapFixedDefault(param universalCfsParam) string {
|
||||
result := make(map[string]string, len(param.DataDescriptor))
|
||||
for key, sub := range param.DataDescriptor {
|
||||
result[key] = sub.DefaultValue
|
||||
}
|
||||
b, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
return "{}"
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func normalizeUniversalValueV6(val string, param universalCfsParam) string {
|
||||
trimmed := strings.TrimSpace(val)
|
||||
if strings.EqualFold(trimmed, "null") {
|
||||
trimmed = ""
|
||||
}
|
||||
if trimmed == "\"\"" {
|
||||
trimmed = ""
|
||||
}
|
||||
|
||||
// map-fixed с DataDescriptor: если значение пустое или "{}" — строим JSON из дефолтов sub-params.
|
||||
dataType := strings.ToLower(param.DataType)
|
||||
if (dataType == "map-fixed" || strings.HasPrefix(dataType, "map")) && len(param.DataDescriptor) > 0 {
|
||||
if trimmed == "" || trimmed == "{}" {
|
||||
return buildMapFixedDefault(param)
|
||||
}
|
||||
return trimmed
|
||||
}
|
||||
|
||||
if trimmed != "" {
|
||||
return trimmed
|
||||
}
|
||||
|
||||
nameHint := strings.ToLower(param.Name + " " + param.Code + " " + param.Label + " " + param.SvcOperationCfsParam)
|
||||
|
||||
if strings.Contains(dataType, "array") || strings.Contains(nameHint, "array") || strings.Contains(nameHint, "list") {
|
||||
return "[]"
|
||||
}
|
||||
if strings.Contains(dataType, "map") || strings.Contains(dataType, "json") || strings.Contains(nameHint, "map") || strings.Contains(nameHint, "json") {
|
||||
return "{}"
|
||||
}
|
||||
if strings.Contains(dataType, "integer") || strings.Contains(dataType, "int") {
|
||||
return "0"
|
||||
}
|
||||
if strings.Contains(dataType, "boolean") || strings.Contains(dataType, "bool") {
|
||||
return "false"
|
||||
}
|
||||
|
||||
return trimmed
|
||||
}
|
||||
Reference in New Issue
Block a user