Ejemplo n.º 1
0
        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);
        }