using FileFlows.Plugin;
namespace FileFlows.BasicNodes.File;
///
/// Flow element that compares the file size of the original file and the current working file
///
public class FileSizeCompare : Node
{
///
public override int Inputs => 1;
///
public override int Outputs => 3;
///
public override FlowElementType Type => FlowElementType.Logic;
///
public override string Icon => "fas fa-sitemap";
///
public override string HelpUrl => "https://fileflows.com/docs/plugins/basic-nodes/file-size-compare";
///
public override int Execute(NodeParameters args)
{
var result = args.FileService.FileSize(args.FileName);
long origSize = result.ValueOrDefault;
if (result.IsFailed)
{
// try get from variables
if (args.Variables.TryGetValue("file.Orig.Size", out object? value) && value is long tSize && tSize > 0)
{
origSize = tSize;
}
else
{
args.Logger?.ELog("Original file does not exists, cannot check size");
return -1;
}
}
//FileInfo fiWorkingFile = new FileInfo(args.WorkingFile);
result = args.FileService.FileSize(args.WorkingFile);
long wfSize = result.ValueOrDefault;
if (result.IsFailed)
{
if (args.WorkingFileSize > 0)
{
wfSize = args.WorkingFileSize;
}
else
{
args.Logger?.ELog("Working file does not exists, cannot check size");
return -1;
}
}
args.Logger?.ILog($"Original File Size: {origSize:n0}");
args.Logger?.ILog($"Working File Size: {wfSize:n0}");
if (wfSize > origSize)
{
args.Logger?.ILog("Working file is larger than original");
return 3;
}
if (origSize == wfSize)
{
args.Logger?.ILog("Working file is same size as the original");
return 2;
}
args.Logger?.ILog("Working file is smaller than original");
return 1;
}
}