func Trans()

in pkg/yml/trans.go [28:70]


func Trans(b []byte, y []byte) YmlModel {
	// 1.trans with kind
	var yMap map[string]interface{}
	if err := json.Unmarshal(b, &yMap); err != nil {
		log.Errorw("unmarshal json failed", "err", err, "raw", string(b))
		return nil
	} else {
		kind := yMap["kind"]
		switch kind {
		case "Gateway":
			// trans to Gateway
			if g, err := ToGateway(y); err != nil {
				return nil
			} else {
				return g
			}
		case "Destination":
			// trans to Destination
			if g, err := ToDestination(y); err != nil {
				return nil
			} else {
				return g
			}
		case "Rule":
			// trans to Rule
			if r, err := ToRule(y); err != nil {
				return nil
			} else {
				return r
			}
		case "Plugin":
			// trans to Plugin
			if r, err := ToPlugin(y); err != nil {
				return nil
			} else {
				return r
			}
		default:
			log.Warnw("unknown kind", "kind", kind)
			return nil
		}
	}
}