From 4d157d9b1e1cfcb5e067b6485c855e2e5249150c Mon Sep 17 00:00:00 2001 From: Amanda Nguyen Date: Thu, 23 Jul 2020 16:31:38 -0700 Subject: [PATCH 1/2] Add in single check for OR dest policy parsing --- .../Azure.Storage.Blobs/src/BlobExtensions.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs index 8a488160ebe5..e2aa2286abf4 100644 --- a/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs +++ b/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs @@ -172,13 +172,20 @@ internal static BlobProperties ToBlobProperties(this BlobPropertiesInternal prop /// internal static IList ParseObjectReplicationIds(this IDictionary OrIds) { - // If the dictionary contains a key with policy id, we are not required to do any parsing since - // the policy id should already be stored in the ObjectReplicationDestinationPolicyId. - if (OrIds.First().Key == "policy-id") + try { + // If the dictionary contains a key with policy id, we are not required to do any parsing since + // the policy id should already be stored in the ObjectReplicationDestinationPolicyId. + KeyValuePair destPolicy = OrIds.Single(id => (id.Key == "policy-id")); return default; } - List OrProperties = new List(); + catch (Exception) + { + // If an exception is thrown by Single then we have confirmed that there's not a policy id already + // stored in the ObjectReplicationDestinationPolicyId and that we have the unparsed + // Object Replication headers from the source blob. + } + List OrProperties = new List(); foreach (KeyValuePair status in OrIds) { string[] ParsedIds = status.Key.Split('_'); @@ -188,7 +195,7 @@ internal static IList ParseObjectReplicationIds(this ID OrProperties[policyIndex].Rules.Add(new ObjectReplicationRule() { RuleId = ParsedIds[1], - ReplicationStatus = (ObjectReplicationStatus) Enum.Parse(typeof(ObjectReplicationStatus), status.Value, true) + ReplicationStatus = (ObjectReplicationStatus)Enum.Parse(typeof(ObjectReplicationStatus), status.Value, true) }); } else From 8f8491ecbfd7e765fc0b6f8c5019f9938e8f61c7 Mon Sep 17 00:00:00 2001 From: Amanda Nguyen Date: Fri, 24 Jul 2020 15:13:29 -0700 Subject: [PATCH 2/2] accident merge conflict, correct camelCase --- .../Azure.Storage.Blobs/src/BlobExtensions.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs index e2aa2286abf4..d2007e29b2fd 100644 --- a/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs +++ b/sdk/storage/Azure.Storage.Blobs/src/BlobExtensions.cs @@ -188,13 +188,13 @@ internal static IList ParseObjectReplicationIds(this ID List OrProperties = new List(); foreach (KeyValuePair status in OrIds) { - string[] ParsedIds = status.Key.Split('_'); - int policyIndex = OrProperties.FindIndex(policy => policy.PolicyId == ParsedIds[0]); + string[] parsedIds = status.Key.Split('_'); + int policyIndex = OrProperties.FindIndex(policy => policy.PolicyId == parsedIds[0]); if (policyIndex > -1) { OrProperties[policyIndex].Rules.Add(new ObjectReplicationRule() { - RuleId = ParsedIds[1], + RuleId = parsedIds[1], ReplicationStatus = (ObjectReplicationStatus)Enum.Parse(typeof(ObjectReplicationStatus), status.Value, true) }); } @@ -203,12 +203,12 @@ internal static IList ParseObjectReplicationIds(this ID IList NewRuleStatus = new List(); NewRuleStatus.Add(new ObjectReplicationRule() { - RuleId = ParsedIds[1], + RuleId = parsedIds[1], ReplicationStatus = (ObjectReplicationStatus)Enum.Parse(typeof(ObjectReplicationStatus), status.Value, true) }); OrProperties.Add(new ObjectReplicationPolicy() { - PolicyId = ParsedIds[0], + PolicyId = parsedIds[0], Rules = NewRuleStatus }); } @@ -235,17 +235,17 @@ internal static IList ParseObjectReplicationMetadata(th List OrProperties = new List(); foreach (KeyValuePair status in OrMetadata) { - string[] ParsedIds = status.Key.Split('_'); - if (ParsedIds[0].StartsWith("or-", System.StringComparison.InvariantCulture)) + string[] parsedIds = status.Key.Split('_'); + if (parsedIds[0].StartsWith("or-", System.StringComparison.InvariantCulture)) { - ParsedIds[0] = ParsedIds[0].Substring("or-".Length); + parsedIds[0] = parsedIds[0].Substring("or-".Length); } - int policyIndex = OrProperties.FindIndex(policy => policy.PolicyId == ParsedIds[0]); + int policyIndex = OrProperties.FindIndex(policy => policy.PolicyId == parsedIds[0]); if (policyIndex > -1) { OrProperties[policyIndex].Rules.Add(new ObjectReplicationRule() { - RuleId = ParsedIds[1], + RuleId = parsedIds[1], ReplicationStatus = (ObjectReplicationStatus)Enum.Parse(typeof(ObjectReplicationStatus), status.Value, true) }); } @@ -254,12 +254,12 @@ internal static IList ParseObjectReplicationMetadata(th IList NewRuleStatus = new List(); NewRuleStatus.Add(new ObjectReplicationRule() { - RuleId = ParsedIds[1], + RuleId = parsedIds[1], ReplicationStatus = (ObjectReplicationStatus)Enum.Parse(typeof(ObjectReplicationStatus), status.Value, true) }); OrProperties.Add(new ObjectReplicationPolicy() { - PolicyId = ParsedIds[0], + PolicyId = parsedIds[0], Rules = NewRuleStatus }); }