public OptimizeWaitResult SendToKrakenForCompression(Item currentItem) { var client = new RestClient(ImageCompressionSettings.GetConversionApiEndpoint()); var request = CreateUploadRequest(currentItem, client); client.Timeout = 300000; try { var response = client.Execute <OptimizeWaitResult>(request); var content = response.Content; if (response.StatusCode != System.Net.HttpStatusCode.OK && response.StatusCode != System.Net.HttpStatusCode.Created) { Diagnostics.Log.Info(message: $"Image Upload failed {response.StatusCode} | response content: {response.Content}", owner: this); ShouldContinue = false; return(null); } if (response.Data != null && string.IsNullOrEmpty(response.Data.KrakedUrl)) { return(null); } Diagnostics.Log.Info(message: $"Image Uploaded to Tiny PNG {response.Data.KrakedUrl}", owner: this); return(response.Data); } catch (Exception ex) { Diagnostics.Log.Error(REMOTE_ERROR, ex); TinyPngApiGateway.RecordError(currentItem, ex.Message); } return(null); }
public virtual string DownloadImage(MediaItem currentItem, ImageUpload img) { var client = new RestClient(img.Location); client.Authenticator = new HttpBasicAuthenticator("Api", ImageCompressionSettings.GetApiEndpointKey()); var request = new RestRequest(Method.GET); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Accept", "*/*"); client.Timeout = 300000; try { byte [] responseData = client.DownloadData(request); string sizeBefore = currentItem.InnerItem.Fields["Size"].Value; UpdateImageFile(currentItem, responseData); string sizeAfter = currentItem.InnerItem.Fields["Size"].Value; UpdateImageInformation(currentItem, sizeBefore, sizeAfter, ImageCompressionConstants.Messages.OPTIMISED_BY, ImageCompressionSettings.GetInformationField()); } catch (Exception ex) { Diagnostics.Log.Error(TIMY_CONNETION_ERROR, ex); RecordError(currentItem, ex.Message); } return("API ISSUE"); }
private void CheckForConversionSync() { if (!ImageCompressionSettings.IsImageConversionScheduledTaskEnabled()) { return; } var imageConversionService = ServiceLocator.ServiceProvider.GetService <IImageNextGenFormatService>(); Diagnostics.Log.Info("Commencing the Image Conversion task", this); foreach (var result in GetUnprocessedImages(ImageCompressionConstants.Messages.OPTIMISED_BY_KRAKEN)) { try { if (result.Name == "__Standard Values") { continue; } Sitecore.Diagnostics.Log.Info($"STARTED - Image Conversion task processing {result.ID} - {result.Name}", this); imageConversionService.ConvertImage(result); Sitecore.Diagnostics.Log.Info($"COMPLETED - Image Conversion task processing {result.ID} - {result.Name}", this); } catch (Exception ex) { Sitecore.Diagnostics.Log.Error($"FAILED - Image Conversion task {result.ID} - {result.Name} - {ex.Message} \n\r {ex.InnerException}", this); } if (!imageConversionService.ShouldContinue) { return; } } }
public UserRequest BuildRequestObject() { var ApiKey = ImageCompressionSettings.GetConversionApiEndpointKey(); var ApiSecret = ImageCompressionSettings.GetConversionApiSecret(); var requestObj = new UserRequest(); requestObj.Authentication.ApiKey = ApiKey; requestObj.Authentication.ApiSecret = ApiSecret; requestObj.WebP = true; requestObj.Lossy = true; requestObj.Wait = true; return(requestObj); }
/// <summary> /// Queries the state of the command. /// </summary> /// <param name="context">The context.</param> /// <returns>The state of the command.</returns> public override CommandState QueryState(CommandContext context) { Assert.ArgumentNotNull(context, "context"); if (!ImageCompressionSettings.IsImageConversionButtonEnabled()) { return(CommandState.Hidden); } if (context.Items.Length != 1 || !ImageCompressionSettings.IsImage(context.Items[0])) { return(CommandState.Hidden); } var item = context.Items[0]; return(CommandState.Enabled); }
public override void Execute(CommandContext context) { if (context.Items.Length != 1) { return; } if (!ImageCompressionSettings.IsImageCompressionButtonEnabled()) { return; } var currentItem = context.Items[0]; currentItem.Editing.BeginEdit(); _imageConversionService.ConvertImage(currentItem); currentItem.Editing.EndEdit(); }
public virtual ImageUpload SendToTinyForCompression(Item currentItem) { var client = new RestClient(ImageCompressionSettings.GetApiEndpoint()); client.Authenticator = new HttpBasicAuthenticator("Api", ImageCompressionSettings.GetApiEndpointKey()); var request = CreateUploadRequest(currentItem, client); client.Timeout = 300000; try { var response = client.Execute <ImageUpload>(request); var content = response.Content; if (response.StatusCode != System.Net.HttpStatusCode.OK && response.StatusCode != System.Net.HttpStatusCode.Created) { Sitecore.Diagnostics.Log.Info($"Image Upload failed {response.StatusCode} | response content: {response.Content}", this); ShouldContinue = false; return(null); } response.Data.Location = GetHeader(response, LOCATON_RESPONSE); if (string.IsNullOrEmpty(response.Data.Location)) { return(null); } Diagnostics.Log.Info($"Image Uploaded to Tiny PNG {response.Data.Location} | Compression count so far: {GetHeader(response, COMPRESSION_COUNT)}", this); return(response.Data); } catch (Exception ex) { Diagnostics.Log.Error(REMOTE_ERROR, ex); RecordError(currentItem, ex.Message); } return(null); }
/// <summary> /// Requires the following field to be patched in: <field fieldName="_templates" returnType="string" type="Sitecore.ContentSearch.ComputedFields.AllTemplates, Sitecore.ContentSearch" deep="true" includeStandardTemplate="false" /> /// </summary> /// <param name="index">The search index to search within.</param> /// <returns></returns> protected IEnumerable <Item> GetUnprocessedImages(string marker) { using (var searchContext = ContentSearchManager.GetIndex(ImageCompressionConstants.GlobalSettings.Index.Master).CreateSearchContext()) { var imageResults = searchContext.GetQueryable <AllTemplatesSearchResultItem>().Where(x => x.TemplateId == ImageCompressionConstants.TemplateIDs.UnversionedImageTemplateId || x.TemplateId == (ImageCompressionConstants.TemplateIDs.UnversionedJpegImageTemplateId) || x.TemplateId == (ImageCompressionConstants.TemplateIDs.VersionedImageTemplateId) || x.TemplateId == (ImageCompressionConstants.TemplateIDs.VersionedJpegImageTemplateId) ); if (!imageResults.Any()) { return(new List <Item>()); } var sitecoreItems = imageResults.Select(x => x.GetItem()).ToList() .Where(y => !y.Fields[ImageCompressionSettings.GetInformationField()].Value.Contains(marker)); var results = sitecoreItems.ToList(); Diagnostics.Log.Info($"Found {results.Count} images", this); return(results); } }
public string DownloadImage(MediaItem currentItem, OptimizeWaitResult img) { var client = new RestClient(img.KrakedUrl); var request = new RestRequest(Method.GET); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Accept", "*/*"); client.Timeout = 300000; try { byte [] responseData = client.DownloadData(request); string sizeBefore = currentItem.InnerItem.Fields["Size"].Value; UpdateImageFile(currentItem, responseData); string sizeAfter = responseData.Length.ToString(); TinyPngApiGateway.UpdateImageInformation(currentItem, sizeBefore, sizeAfter, ImageCompressionConstants.Messages.OPTIMISED_BY_KRAKEN, ImageCompressionSettings.GetConversionInformationField()); } catch (Exception ex) { Diagnostics.Log.Error(TIMY_CONNETION_ERROR, ex); TinyPngApiGateway.RecordError(currentItem, ex.Message); } return("API ISSUE"); }
public static void RecordError(MediaItem currentItem, string message) { currentItem.InnerItem.Editing.BeginEdit(); currentItem.InnerItem.Fields[ImageCompressionSettings.GetInformationField()].Value = message; currentItem.InnerItem.Editing.EndEdit(); }