in sdk/network/Azure.ResourceManager.Network/src/Customization/Models/ApplicationGatewayAvailableSslOptionsInfo.Serialization.cs [17:175]
internal static ApplicationGatewayAvailableSslOptionsInfo DeserializeApplicationGatewayAvailableSslOptionsInfo(JsonElement element, ModelReaderWriterOptions options = null)
{
options ??= new ModelReaderWriterOptions("W");
if (element.ValueKind == JsonValueKind.Null)
{
return null;
}
ResourceIdentifier id = default;
string name = default;
ResourceType? type = default;
AzureLocation? location = default;
IDictionary<string, string> tags = default;
IList<WritableSubResource> predefinedPolicies = default;
ApplicationGatewaySslPolicyName? defaultPolicy = default;
IList<ApplicationGatewaySslCipherSuite> availableCipherSuites = default;
IList<ApplicationGatewaySslProtocol> availableProtocols = default;
IDictionary<string, BinaryData> serializedAdditionalRawData = default;
Dictionary<string, BinaryData> additionalPropertiesDictionary = new Dictionary<string, BinaryData>();
foreach (var property in element.EnumerateObject())
{
if (property.NameEquals("id"u8))
{
if (property.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
// Wrokaround for issue https://github.com/Azure/azure-sdk-for-net/issues/27102 to ensure the id is a valid ResourceIdentifier
string val = property.Value.GetString();
if (val.Contains("resourceGroups//"))
{
val = val.Replace("resourceGroups//", string.Empty);
}
id = new ResourceIdentifier(val);
continue;
}
if (property.NameEquals("name"u8))
{
name = property.Value.GetString();
continue;
}
if (property.NameEquals("type"u8))
{
if (property.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
type = new ResourceType(property.Value.GetString());
continue;
}
if (property.NameEquals("location"u8))
{
if (property.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
location = new AzureLocation(property.Value.GetString());
continue;
}
if (property.NameEquals("tags"u8))
{
if (property.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
Dictionary<string, string> dictionary = new Dictionary<string, string>();
foreach (var property0 in property.Value.EnumerateObject())
{
dictionary.Add(property0.Name, property0.Value.GetString());
}
tags = dictionary;
continue;
}
if (property.NameEquals("properties"u8))
{
if (property.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
foreach (var property0 in property.Value.EnumerateObject())
{
if (property0.NameEquals("predefinedPolicies"u8))
{
if (property0.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
List<WritableSubResource> array = new List<WritableSubResource>();
foreach (var item in property0.Value.EnumerateArray())
{
// Wrokaround for issue https://github.com/Azure/azure-sdk-for-net/issues/27102 to ensure the id is a valid ResourceIdentifier
string val = item.ToString();
if (val.Contains("resourceGroups//"))
{
val = val.Replace("resourceGroups//", string.Empty);
}
array.Add(JsonSerializer.Deserialize<WritableSubResource>(val));
}
predefinedPolicies = array;
continue;
}
if (property0.NameEquals("defaultPolicy"u8))
{
if (property0.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
defaultPolicy = new ApplicationGatewaySslPolicyName(property0.Value.GetString());
continue;
}
if (property0.NameEquals("availableCipherSuites"u8))
{
if (property0.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
List<ApplicationGatewaySslCipherSuite> array = new List<ApplicationGatewaySslCipherSuite>();
foreach (var item in property0.Value.EnumerateArray())
{
array.Add(new ApplicationGatewaySslCipherSuite(item.GetString()));
}
availableCipherSuites = array;
continue;
}
if (property0.NameEquals("availableProtocols"u8))
{
if (property0.Value.ValueKind == JsonValueKind.Null)
{
continue;
}
List<ApplicationGatewaySslProtocol> array = new List<ApplicationGatewaySslProtocol>();
foreach (var item in property0.Value.EnumerateArray())
{
array.Add(new ApplicationGatewaySslProtocol(item.GetString()));
}
availableProtocols = array;
continue;
}
}
continue;
}
if (options.Format != "W")
{
additionalPropertiesDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
}
}
serializedAdditionalRawData = additionalPropertiesDictionary;
return new ApplicationGatewayAvailableSslOptionsInfo(
id,
name,
type,
location,
tags ?? new ChangeTrackingDictionary<string, string>(),
serializedAdditionalRawData,
predefinedPolicies ?? new ChangeTrackingList<WritableSubResource>(),
defaultPolicy,
availableCipherSuites ?? new ChangeTrackingList<ApplicationGatewaySslCipherSuite>(),
availableProtocols ?? new ChangeTrackingList<ApplicationGatewaySslProtocol>());
}