/// <summary> /// Detects if this Identity is equals to another Identity instance. /// </summary> /// <param name="other"> Identity object to compare. </param> /// <returns> True if they are equal, otherwise False. </returns> public bool Equals(Identity other) { if (other == null) { return(false); } if (UserAssignedIdentities.Count == other.UserAssignedIdentities.Count) { foreach (var identity in UserAssignedIdentities) { UserAssignedIdentity value; if (other.UserAssignedIdentities.TryGetValue(identity.Key, out value)) { if (!UserAssignedIdentity.Equals(identity.Value, value)) { return(false); } } else { return(false); } } } return(SystemAssignedIdentity.Equals(SystemAssignedIdentity, other.SystemAssignedIdentity)); }
/// <summary> /// Compares this <see cref="UserAssignedIdentity"/> instance with another object and determines if they are equals. /// </summary> /// <param name="other"> <see cref="UserAssignedIdentity"/> object to compare. </param> /// <returns> True if they are equal, otherwise false. </returns> public bool Equals(UserAssignedIdentity other) { if (other == null) { return(false); } return(ClientId.Equals(other.ClientId) && PrincipalId.Equals(other.PrincipalId)); }
/// <summary> /// Compares two <see cref="UserAssignedIdentity"/> objects to determine if they are equal. /// </summary> /// <param name="original"> First <see cref="UserAssignedIdentity"/> object to compare. </param> /// <param name="other"> Second <see cref="UserAssignedIdentity"/> object to compare. </param> /// <returns> True if they are equal, otherwise False. </returns> public static bool Equals(UserAssignedIdentity original, UserAssignedIdentity other) { if (original == null) { return(other == null); } return(original.Equals(other)); }
/// <summary> /// Converts a <see cref="JsonElement"/> into an <see cref="Identity"/> object. /// </summary> /// <param name="element"> A <see cref="JsonElement"/> containing an <see cref="Identity"/>. </param> /// <returns> New Identity object with JSON values. </returns> public static Identity Deserialize(JsonElement element) { if (element.ValueKind == JsonValueKind.Undefined) { throw new ArgumentException("JsonElement cannot be undefined ", nameof(element)); } Optional <SystemAssignedIdentity> systemAssignedIdentity = default; IDictionary <ResourceIdentifier, UserAssignedIdentity> userAssignedIdentities = new Dictionary <ResourceIdentifier, UserAssignedIdentity>(); string type = string.Empty; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("userAssignedIdentities")) { if (property.Value.ValueKind == JsonValueKind.Null) { userAssignedIdentities = null; continue; } string resourceId = string.Empty; foreach (var keyValuePair in property.Value.EnumerateObject()) { resourceId = keyValuePair.Name; var userAssignedIdentity = UserAssignedIdentity.Deserialize(keyValuePair.Value); userAssignedIdentities.Add(resourceId, userAssignedIdentity); } continue; } if (property.NameEquals("type")) { if (property.Value.ValueKind == JsonValueKind.Null) { throw new ArgumentNullException(nameof(property)); } type = property.Value.GetString(); } if (type.Equals(SystemAssigned)) { systemAssignedIdentity = SystemAssignedIdentity.Deserialize(element); continue; } if (type.Equals(SystemAndUserAssigned)) { systemAssignedIdentity = SystemAssignedIdentity.Deserialize(element); continue; } } return(new Identity(systemAssignedIdentity, userAssignedIdentities)); }
/// <summary> /// Compares this <see cref="UserAssignedIdentity"/> with another instance. /// </summary> /// <param name="other"> <see cref="UserAssignedIdentity"/> object to compare. </param> /// <returns> -1 for less than, 0 for equals, 1 for greater than. </returns> public int CompareTo(UserAssignedIdentity other) { if (other == null) { return(1); } int compareResult = 0; if ((compareResult = ClientId.CompareTo(other.ClientId)) == 0 && (compareResult = PrincipalId.CompareTo(other.PrincipalId)) == 0) { return(0); } return(compareResult); }
/// <summary> /// Converts an <see cref="UserAssignedIdentity"/> object into a <see cref="JsonElement"/>. /// </summary> /// <param name="writer"> Utf8JsonWriter object to which the output is going to be written. </param> /// <param name="userAssignedIdentity"> <see cref="UserAssignedIdentity"/> object to be converted. </param> public static void Serialize(Utf8JsonWriter writer, UserAssignedIdentity userAssignedIdentity) { if (userAssignedIdentity == null) { throw new ArgumentNullException(nameof(userAssignedIdentity)); } if (writer == null) { throw new ArgumentNullException(nameof(writer)); } writer.WriteStartObject(); writer.WritePropertyName("clientId"); writer.WriteStringValue(userAssignedIdentity.ClientId.ToString()); writer.WritePropertyName("principalId"); writer.WriteStringValue(userAssignedIdentity.PrincipalId.ToString()); writer.WriteEndObject(); writer.Flush(); }
/// <summary> /// Converts an <see cref="Identity"/> object into a <see cref="JsonElement"/>. /// </summary> /// <param name="writer"> Utf8JsonWriter object to which the output is going to be written. </param> /// <param name="identity"> Identity object to be converted. </param> public static void Serialize(Utf8JsonWriter writer, Identity identity) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (identity == null) { throw new ArgumentNullException(nameof(identity)); } writer.WriteStartObject(); writer.WritePropertyName("identity"); if (identity.SystemAssignedIdentity == null && identity.UserAssignedIdentities.Count == 0) { writer.WriteStringValue("null"); writer.WriteEndObject(); writer.Flush(); return; } writer.WriteStartObject(); if (identity.SystemAssignedIdentity != null && identity.UserAssignedIdentities.Count != 0) { SystemAssignedIdentity.Serialize(writer, identity.SystemAssignedIdentity); writer.WritePropertyName("kind"); writer.WriteStringValue(SystemAndUserAssigned); writer.WritePropertyName("userAssignedIdentities"); writer.WriteStartObject(); foreach (var keyValuePair in identity.UserAssignedIdentities) { writer.WritePropertyName(keyValuePair.Key); UserAssignedIdentity.Serialize(writer, keyValuePair.Value); } writer.WriteEndObject(); } else if (identity.SystemAssignedIdentity != null) { SystemAssignedIdentity.Serialize(writer, identity.SystemAssignedIdentity); writer.WritePropertyName("kind"); writer.WriteStringValue(SystemAssigned); } else if (identity.UserAssignedIdentities.Count != 0) { writer.WritePropertyName("kind"); writer.WriteStringValue(UserAssigned); writer.WritePropertyName("userAssignedIdentities"); writer.WriteStartObject(); foreach (var keyValuePair in identity.UserAssignedIdentities) { writer.WritePropertyName(keyValuePair.Key); UserAssignedIdentity.Serialize(writer, keyValuePair.Value); } writer.WriteEndObject(); } writer.WriteEndObject(); writer.WriteEndObject(); writer.Flush(); }