using System.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.IO; namespace SabreTools.Library.FileTypes { public class BaseFile { #region Publicly facing variables // TODO: Get all of these values automatically so there is no public "set" public FileType Type { get; protected set; } public string Filename { get; set; } public string Parent { get; set; } public string Date { get; set; } public long? Size { get; set; } public byte[] CRC { get; set; } public byte[] MD5 { get; set; } #if NET_FRAMEWORK public byte[] RIPEMD160 { get; set; } #endif public byte[] SHA1 { get; set; } public byte[] SHA256 { get; set; } public byte[] SHA384 { get; set; } public byte[] SHA512 { get; set; } public byte[] SpamSum { get; set; } #endregion #region Construtors /// /// Create a new BaseFile with no base file /// public BaseFile() { } /// /// Create a new BaseFile from the given file /// /// Name of the file to use /// True if hashes for this file should be calculated (default), false otherwise public BaseFile(string filename, bool getHashes = true) { this.Filename = filename; if (getHashes) { BaseFile temp = FileExtensions.GetInfo(this.Filename); if (temp != null) { this.Parent = temp.Parent; this.Date = temp.Date; this.CRC = temp.CRC; this.MD5 = temp.MD5; #if NET_FRAMEWORK this.RIPEMD160 = temp.RIPEMD160; #endif this.SHA1 = temp.SHA1; this.SHA256 = temp.SHA256; this.SHA384 = temp.SHA384; this.SHA512 = temp.SHA512; this.SpamSum = temp.SpamSum; } } } /// /// Create a new BaseFile from the given file /// /// Name of the file to use /// Stream to populate information from /// True if hashes for this file should be calculated (default), false otherwise public BaseFile(string filename, Stream stream, bool getHashes = true) { this.Filename = filename; if (getHashes) { BaseFile temp = stream.GetInfo(); if (temp != null) { this.Parent = temp.Parent; this.Date = temp.Date; this.CRC = temp.CRC; this.MD5 = temp.MD5; #if NET_FRAMEWORK this.RIPEMD160 = temp.RIPEMD160; #endif this.SHA1 = temp.SHA1; this.SHA256 = temp.SHA256; this.SHA384 = temp.SHA384; this.SHA512 = temp.SHA512; this.SpamSum = temp.SpamSum; } } } #endregion } }