public Response.IResponse Execute(CommandArgs args) { var pa = args.As <resizeArgs>(); if (string.IsNullOrWhiteSpace(pa.target)) { return(new Response.ErrorResponse("target not specified")); } // get volume for our target var vol = _volumeManager.GetByHash(pa.target); if (vol == null) { return(new Response.ErrorResponse("invalid target")); } var fileToModify = vol.GetFileByHash(pa.target); if (fileToModify == null) { return(new Response.ErrorResponse("invalid target")); } // check if we can generate thumbnail for this file if (!_imageEditorService.CanGenerateThumbnail(fileToModify.Name)) { return(new Response.ErrorResponse("unsupported extension")); } // check what operation we want to perform string sourceFilePath = vol.DecodeHashToPath(pa.target); switch (pa.mode) { case imageEditMode.crop: if (!_imageEditorService.CropImage( sourceFilePath, new System.Drawing.Point(pa.x ?? 0, pa.y ?? 0), new System.Drawing.Size(pa.width, pa.height))) { return(new Response.ErrorResponse("other error")); } break; case imageEditMode.resize: if (!_imageEditorService.ResizeImage( sourceFilePath, new System.Drawing.Size(pa.width, pa.height))) { return(new Response.ErrorResponse("other error")); } break; case imageEditMode.rotate: if (!_imageEditorService.RotateImage(sourceFilePath, pa.degree ?? 0)) { return(new Response.ErrorResponse("other error")); } break; } // hmm since we need to recreate the thumbnail, then we need to delete existing vol.DeleteThumbnailFor(fileToModify); // and set that thumbnail is supported fileToModify.Thumbnail = Model.FileModel.ThumbnailIsSupported; return(new Response.ResizeResponse(new Model.FileModel[] { fileToModify })); }