protected void UpdateImageFile(MediaItem currentItem, byte[] responseData)
        {
            Media media = MediaManager.GetMedia(currentItem);

            Stream stream = new MemoryStream(responseData);

            try
            {
                if (!currentItem.InnerItem.InheritsFrom(ImageCompressionConstants.TemplateIDs.RelatedImageTemplateId))
                {
                    InjectTheNeededTemplate(currentItem);
                }

                Data.Fields.LinkField relatedField = media.MediaData.MediaItem.InnerItem.Fields[ImageCompressionConstants.ImageFields.RELATED_IMAGE_FIELD];
                if (relatedField != null && relatedField.TargetItem != null)
                {
                    var myMedia         = new Data.Items.MediaItem(relatedField.TargetItem);
                    var hiddenWebPMedia = new Media(new MediaData(myMedia));
                    hiddenWebPMedia.SetStream(stream, currentItem.Extension);
                }
                else
                {
                    if (stream != null)
                    {
                        CreateNewMediaItemWithStreamAndLink(stream, currentItem, relatedField, media);
                    }
                }
            }
            catch (Exception ex)
            {
                return;
            } // Sitecore may not be ready to accept this sort of image, but it still works despite this exception
        }
        public Media DetermineImageResponse(HttpContext context, MediaRequest request, Media media)
        {
            Diagnostics.Assert.ArgumentNotNull(context, "context");
            Diagnostics.Assert.ArgumentNotNull(request, "request");
            Diagnostics.Assert.ArgumentNotNull(media, "media");

            if (ShouldSkipWebProcessing(context))
            {
                return(media);
            }

            // So why use a link field here ... Sitecore has a limitation on the default attachement field called Blob
            // You can only have one of these
            // So unfortunately you can't sore the WEBP and the JPEG binary data on the one Media Item in Sitecore.
            // At this stage the best way to do this for thie module is have two Media Items.
            Data.Fields.LinkField relatedField = media.MediaData.MediaItem.InnerItem.Fields["Related Compressed File"];
            if (relatedField != null && relatedField.TargetItem != null)
            {
                var myMedia = new Data.Items.MediaItem(relatedField.TargetItem);
                media = new Media(new MediaData(myMedia));
            }
            return(media);
        }