Exemplo n.º 1
0
        internal static MetricAlertSingleResourceMultipleMetricCriteria DeserializeMetricAlertSingleResourceMultipleMetricCriteria(JsonElement element)
        {
            Optional <IList <MetricCriteria> > allOf = default;
            Odatatype odataType = default;
            IDictionary <string, object> additionalProperties           = default;
            Dictionary <string, object>  additionalPropertiesDictionary = new Dictionary <string, object>();

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("allOf"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <MetricCriteria> array = new List <MetricCriteria>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(MetricCriteria.DeserializeMetricCriteria(item));
                    }
                    allOf = array;
                    continue;
                }
                if (property.NameEquals("odata.type"))
                {
                    odataType = new Odatatype(property.Value.GetString());
                    continue;
                }
                additionalPropertiesDictionary.Add(property.Name, property.Value.GetObject());
            }
            additionalProperties = additionalPropertiesDictionary;
            return(new MetricAlertSingleResourceMultipleMetricCriteria(odataType, additionalProperties, Optional.ToList(allOf)));
        }
        internal static MultiMetricCriteria DeserializeMultiMetricCriteria(JsonElement element)
        {
            if (element.TryGetProperty("criterionType", out JsonElement discriminator))
            {
                switch (discriminator.GetString())
                {
                case "DynamicThresholdCriterion": return(DynamicMetricCriteria.DeserializeDynamicMetricCriteria(element));

                case "StaticThresholdCriterion": return(MetricCriteria.DeserializeMetricCriteria(element));
                }
            }
            CriterionType     criterionType   = default;
            string            name            = default;
            string            metricName      = default;
            Optional <string> metricNamespace = default;
            AggregationType   timeAggregation = default;
            Optional <IList <MetricDimension> > dimensions                     = default;
            IDictionary <string, object>        additionalProperties           = default;
            Dictionary <string, object>         additionalPropertiesDictionary = new Dictionary <string, object>();

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("criterionType"))
                {
                    criterionType = new CriterionType(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("metricName"))
                {
                    metricName = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("metricNamespace"))
                {
                    metricNamespace = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("timeAggregation"))
                {
                    timeAggregation = property.Value.GetString().ToAggregationType();
                    continue;
                }
                if (property.NameEquals("dimensions"))
                {
                    List <MetricDimension> array = new List <MetricDimension>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(MetricDimension.DeserializeMetricDimension(item));
                    }
                    dimensions = array;
                    continue;
                }
                additionalPropertiesDictionary.Add(property.Name, property.Value.GetObject());
            }
            additionalProperties = additionalPropertiesDictionary;
            return(new MultiMetricCriteria(criterionType, name, metricName, metricNamespace.Value, timeAggregation, Optional.ToList(dimensions), additionalProperties));
        }