private static decimal ConvertToBytes(this decimal fileSize, FileSizeUnitName unit) { const int factor = 1024; const int twoFactor = 1024 * 1024; var fileSizeInBytes = fileSize; if (unit == FileSizeUnitName.Kilobyte) { fileSizeInBytes = fileSizeInBytes * factor; } if (unit == FileSizeUnitName.Megabyte) { fileSizeInBytes = fileSizeInBytes * twoFactor; } if (unit == FileSizeUnitName.Gigabyte) { fileSizeInBytes = fileSizeInBytes * twoFactor * factor; } if (unit == FileSizeUnitName.Terabyte) { fileSizeInBytes = fileSizeInBytes * twoFactor * twoFactor; } if (unit == FileSizeUnitName.Petabyte) { fileSizeInBytes = fileSizeInBytes * twoFactor * twoFactor * factor; } if (unit == FileSizeUnitName.Exabyte) { fileSizeInBytes = fileSizeInBytes * twoFactor * twoFactor * twoFactor; } return(fileSizeInBytes); }
public static IRuleBuilderOptions <T, long> MustNotExceedFileSize <T> (this IRuleBuilder <T, long> ruleBuilder, decimal fileSize, FileSizeUnitName unit, Func <T, string> fileName) { var fileSizeInBytes = fileSize.ConvertToBytes(unit); return(ruleBuilder.SetValidator(new MustNotExceedFileSize <T>(fileSizeInBytes, unit, fileName, null))); }
public static IRuleBuilderOptions <T, Guid> MustNotExceedFileSize <T> (this IRuleBuilder <T, Guid> ruleBuilder, decimal fileSize, FileSizeUnitName unit, IQueryEntities entities) { var fileSizeInBytes = fileSize.ConvertToBytes(unit); return(ruleBuilder.SetValidator(new MustNotExceedFileSize <T>(fileSizeInBytes, unit, null, entities))); }
internal MustNotExceedFileSize(decimal fileSizeInBytes, FileSizeUnitName unit, Func <T, string> fileName, IQueryEntities entities) : base(FailMessageFormat.Replace("{0}", "{FileName}").Replace("{1}", "{ActualSize}").Replace("{2}", "{MaxSize}")) { _fileSizeInBytes = fileSizeInBytes; _fileName = fileName; _unit = unit; _entities = entities; }
public static string ToFileSize(this decimal lengthInBytes, int maxPrecision = 2, FileSizeUnitName? fileSizeUnitName = null) { if (maxPrecision < 0) throw new ArgumentOutOfRangeException("maxPrecision", "Must be greater than or equal to zero."); var unit = fileSizeUnitName ?? GetSmartUnitName(lengthInBytes); var size = lengthInBytes.ConvertBytesTo(unit); var precision = size.GetPrecision(maxPrecision); var sizeText = size.ToString(precision.GetSizeFormat()); var unitText = unit.GetUnitText(sizeText); return string.Format("{0} {1}", sizeText, unitText); }
private static decimal ConvertBytesTo(this decimal lengthInBytes, FileSizeUnitName unitName) { switch (unitName) { case FileSizeUnitName.Byte: return lengthInBytes; case FileSizeUnitName.Kilobyte: return lengthInBytes / Factor; case FileSizeUnitName.Megabyte: return lengthInBytes / Factor / Factor; case FileSizeUnitName.Gigabyte: return lengthInBytes / Factor / Factor / Factor; case FileSizeUnitName.Terabyte: return lengthInBytes / Factor / Factor / Factor / Factor; case FileSizeUnitName.Petabyte: return lengthInBytes / Factor / Factor / Factor / Factor / Factor; default: return lengthInBytes / Factor / Factor / Factor / Factor / Factor / Factor; } }
private static decimal ConvertBytesTo(this decimal lengthInBytes, FileSizeUnitName unitName) { switch (unitName) { case FileSizeUnitName.Byte: return(lengthInBytes); case FileSizeUnitName.Kilobyte: return(lengthInBytes / Factor); case FileSizeUnitName.Megabyte: return(lengthInBytes / Factor / Factor); case FileSizeUnitName.Gigabyte: return(lengthInBytes / Factor / Factor / Factor); case FileSizeUnitName.Terabyte: return(lengthInBytes / Factor / Factor / Factor / Factor); case FileSizeUnitName.Petabyte: return(lengthInBytes / Factor / Factor / Factor / Factor / Factor); default: return(lengthInBytes / Factor / Factor / Factor / Factor / Factor / Factor); } }
public static string ToFileSize(this long lengthInBytes, int maxPrecision = 2, FileSizeUnitName? fileSizeUnitName = null) { return ((decimal) lengthInBytes).ToFileSize(maxPrecision, fileSizeUnitName); }
private static string GetUnitText(this FileSizeUnitName unit, string sizeText) { return(sizeText == "1" ? unit.ToString() : string.Format("{0}s", unit)); }