Example #1
0
        /// <summary>
        /// Encodes a byte array
        /// </summary>
        /// <param name="data"></param>
        /// <param name="encodingMap"></param>
        /// <param name="rootName">Root filename</param>
        /// <returns></returns>
        public static CASRecord Encode(byte[] data, EMap encodingMap, string rootName = null)
        {
            using var bt = new BlockTableStreamWriter(encodingMap);
            bt.Write(data);

            var record = bt.Finalise();

            record.FileName = rootName;
            return(record);
        }
Example #2
0
        /// <summary>
        /// Encodes a stream
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="encodingMap"></param>
        /// <param name="rootName">Root filename</param>
        /// <returns></returns>
        public static CASRecord Encode(Stream stream, EMap encodingMap, string rootName = null)
        {
            using var bt    = new BlockTableStreamWriter(encodingMap);
            stream.Position = 0;
            stream.CopyTo(bt);

            var record = bt.Finalise();

            record.FileName = rootName;
            return(record);
        }
Example #3
0
        /// <summary>
        /// Encodes a file using Blizzard-esque rules
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="rootName">Root filename</param>
        /// <returns></returns>
        public static CASRecord Encode(string filename, string rootName = null)
        {
            using var fs = File.OpenRead(filename);
            using var bt = new BlockTableStreamWriter(GetEMapFromExtension(filename));
            fs.CopyTo(bt);

            var record = bt.Finalise();

            record.FileName = rootName;
            return(record);
        }
Example #4
0
        /// <summary>
        /// Encodes a byte array and saves the result to disk
        /// </summary>
        /// <param name="data"></param>
        /// <param name="encodingMap"></param>
        /// <param name="directory"></param>
        /// <param name="rootName">Root filename</param>
        /// <returns></returns>
        public static CASRecord EncodeAndExport(byte[] data, EMap encodingMap, string directory, string rootName = null)
        {
            using var bt = new BlockTableStreamWriter(encodingMap);
            bt.Write(data);
            var record = bt.Finalise();

            string saveLocation = Path.Combine(directory, record.EKey.ToString());

            using (var fs = Helpers.Create(saveLocation))
            {
                bt.WriteTo(fs);
                record.BLTEPath = saveLocation;
                record.FileName = rootName;
            }

            return(record);
        }
Example #5
0
        /// <summary>
        /// Encodes a stream using Blizzard-esque rules and saves the result to disk
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="encodingMap"></param>
        /// <param name="directory"></param>
        /// <param name="rootName">Root filename</param>
        /// <returns></returns>
        public static CASRecord EncodeAndExport(Stream stream, EMap encodingMap, string directory, string rootName = null)
        {
            using (var bt = new BlockTableStreamWriter(encodingMap))
            {
                stream.Position = 0;
                stream.CopyTo(bt);
                var record = bt.Finalise();

                string saveLocation = Helpers.GetCDNPath(record.EKey.ToString(), "data", directory, true);
                using (var fs = Helpers.Create(saveLocation))
                {
                    bt.WriteTo(fs);
                    record.BLTEPath = saveLocation;
                    record.FileName = rootName;
                }

                return(record);
            }
        }
Example #6
0
        /// <summary>
        /// Encodes a file using Blizzard-esque rules and saves the result to disk
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="directory"></param>
        /// <param name="rootName">Root filename</param>
        /// <returns></returns>
        public static CASRecord EncodeAndExport(string filename, string directory, string rootName = null)
        {
            using var bt = new BlockTableStreamWriter(GetEMapFromExtension(filename));
            // read the file into the BlockTableStream
            using (var fs = File.OpenRead(filename))
                fs.CopyTo(bt);

            // encode
            var record = bt.Finalise();

            // save the encoded file
            string saveLocation = Path.Combine(directory, record.EKey.ToString());

            using (var fs = Helpers.Create(saveLocation))
            {
                bt.WriteTo(fs);
                record.BLTEPath = saveLocation;
                record.FileName = rootName;
            }

            return(record);
        }