internal ReservationCatalog(ResourceType?resourceType, string skuName, IReadOnlyDictionary <string, IList <ReservationBillingPlan> > billingPlans, IReadOnlyList <ReservationTerm> terms, IReadOnlyList <AzureLocation> locations, IReadOnlyList <SkuProperty> skuProperties, CatalogMsrp msrp, IReadOnlyList <SkuRestriction> restrictions, string tier, string size, IReadOnlyList <SkuCapability> capabilities)
 {
     ResourceType  = resourceType;
     SkuName       = skuName;
     BillingPlans  = billingPlans;
     Terms         = terms;
     Locations     = locations;
     SkuProperties = skuProperties;
     Msrp          = msrp;
     Restrictions  = restrictions;
     Tier          = tier;
     Size          = size;
     Capabilities  = capabilities;
 }
Exemplo n.º 2
0
        internal static ReservationCatalog DeserializeReservationCatalog(JsonElement element)
        {
            Optional <string> resourceType = default;
            Optional <string> name         = default;
            Optional <IReadOnlyDictionary <string, IList <ReservationBillingPlan> > > billingPlans = default;
            Optional <IReadOnlyList <ReservationTerm> > terms         = default;
            Optional <IReadOnlyList <AzureLocation> >   locations     = default;
            Optional <IReadOnlyList <SkuProperty> >     skuProperties = default;
            Optional <CatalogMsrp> msrp = default;
            Optional <IReadOnlyList <SkuRestriction> > restrictions = default;
            Optional <string> tier = default;
            Optional <string> size = default;
            Optional <IReadOnlyList <SkuCapability> > capabilities = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("resourceType"))
                {
                    resourceType = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("billingPlans"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    Dictionary <string, IList <ReservationBillingPlan> > dictionary = new Dictionary <string, IList <ReservationBillingPlan> >();
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        List <ReservationBillingPlan> array = new List <ReservationBillingPlan>();
                        foreach (var item in property0.Value.EnumerateArray())
                        {
                            array.Add(new ReservationBillingPlan(item.GetString()));
                        }
                        dictionary.Add(property0.Name, array);
                    }
                    billingPlans = dictionary;
                    continue;
                }
                if (property.NameEquals("terms"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <ReservationTerm> array = new List <ReservationTerm>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(new ReservationTerm(item.GetString()));
                    }
                    terms = array;
                    continue;
                }
                if (property.NameEquals("locations"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <AzureLocation> array = new List <AzureLocation>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(new AzureLocation(item.GetString()));
                    }
                    locations = array;
                    continue;
                }
                if (property.NameEquals("skuProperties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <SkuProperty> array = new List <SkuProperty>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(SkuProperty.DeserializeSkuProperty(item));
                    }
                    skuProperties = array;
                    continue;
                }
                if (property.NameEquals("msrp"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    msrp = CatalogMsrp.DeserializeCatalogMsrp(property.Value);
                    continue;
                }
                if (property.NameEquals("restrictions"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <SkuRestriction> array = new List <SkuRestriction>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(SkuRestriction.DeserializeSkuRestriction(item));
                    }
                    restrictions = array;
                    continue;
                }
                if (property.NameEquals("tier"))
                {
                    tier = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("size"))
                {
                    size = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("capabilities"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <SkuCapability> array = new List <SkuCapability>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(SkuCapability.DeserializeSkuCapability(item));
                    }
                    capabilities = array;
                    continue;
                }
            }
            return(new ReservationCatalog(resourceType.Value, name.Value, Optional.ToDictionary(billingPlans), Optional.ToList(terms), Optional.ToList(locations), Optional.ToList(skuProperties), msrp.Value, Optional.ToList(restrictions), tier.Value, size.Value, Optional.ToList(capabilities)));
        }