protected static async Task <CloudBlockBlob> GetOrSaveOptimizedBlobAsync(CloudBlobContainer siteImagesContainer, IImageOptimizer krakenClient, string siteId, string imageUrl, string optimizedImageName, byte[] imageBytes) { System.Diagnostics.Trace.TraceInformation($"Checking for optimized bytes for `{siteId}` site image `{imageUrl}`."); var optimizedBlob = siteImagesContainer.GetBlockBlobReference($"{OptimizedFolderPrefix}{optimizedImageName}"); bool optimizeExists = await optimizedBlob.ExistsAsync().ConfigureAwait(false); if (optimizeExists) { System.Diagnostics.Trace.TraceInformation($"Optimized bytes exist for `{siteId}` site image `{imageUrl}`."); await optimizedBlob.FetchAttributesAsync().ConfigureAwait(false); System.Diagnostics.Trace.TraceInformation($"Optimized bytes exist for `{siteId}` site image `{imageUrl}` with size {optimizedBlob.Properties.Length:D}."); optimizeExists = optimizedBlob.Properties.Length > 0; } if (!optimizeExists) { System.Diagnostics.Trace.TraceInformation($"Optimized bytes do not exist for `{siteId}` site image `{imageUrl}`."); System.Diagnostics.Trace.TraceInformation($"Optimizing `{siteId}` site image `{imageUrl}`."); var optimizedBytes = await krakenClient.OptimizeBytesAsync(imageBytes, optimizedImageName).ConfigureAwait(false); System.Diagnostics.Trace.TraceInformation($"Saving optimized bytes for `{siteId}` site image `{imageUrl}`."); await optimizedBlob.UploadFromByteArrayAsync(optimizedBytes, 0, optimizedBytes.Length).ConfigureAwait(false); System.Diagnostics.Trace.TraceInformation($"Saved optimized bytes for `{siteId}` site image `{imageUrl}`."); } else { System.Diagnostics.Trace.TraceInformation($"Using existing optimized bytes for `{siteId}` site image `{imageUrl}`."); } return(optimizedBlob); }