Пример #1
0
        /// <summary>
        /// Создать экземпляр класса распарсив файл.
        /// </summary>
        /// <param name="file"></param>
        /// <param name="localeFolderName">Название папки локализации программы</param>
        /// <exception cref="FileNotFoundException">Генерируется, если файл не найден</exception>
        /// <exception cref="ArgumentNullException">Генерируется, если переданная строка имеет значение null</exception>
        /// <returns></returns>
        public static UpdateFile FromFile(string file, string localeFolderName)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            if (file == null)
            {
                throw new ArgumentNullException("localeFolderName");
            }

            var fileInfo = new FileInfo(file);

            if (!fileInfo.Exists)
            {
                throw new FileNotFoundException("Файл: \"{0}\" не найден", Path.GetFileName(file));
            }

            //string filePath = file.Split(Path.DirectorySeparatorChar).Last().Split('\\')[0];
            string[] filePathSegments = file.Split(Path.DirectorySeparatorChar);
            //string filePath = filePathSegments[filePathSegments.Length - 1];
            string fileName = filePathSegments[filePathSegments.Length - 1];

            //string filePath = filePathSegments[filePathSegments.Length + 1];

            var updateFile = new UpdateFile(fileName, HashHelper.GetMD5HashOfFile(file), fileInfo.Length);

            return(updateFile);
        }
Пример #2
0
        /// <summary>
        /// Создать экземпляр класса распарсив файл.
        /// </summary>
        /// <param name="file"></param>
        /// <param name="localeFolderName">Название папки локализации программы</param>
        /// <exception cref="FileNotFoundException">Генерируется, если файл не найден</exception>
        /// <exception cref="ArgumentNullException">Генерируется, если переданная строка имеет значение null</exception>
        /// <returns></returns>
        public static UpdateFile FromFile(string file, string localeFolderName)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            if (file == null)
            {
                throw new ArgumentNullException("localeFolderName");
            }

            var fileInfo = new FileInfo(file);

            if (!fileInfo.Exists)
            {
                throw new FileNotFoundException("File: \"{0}\" not found", Path.GetFileName(file));
            }

            string rootFolderName = file.Split(Path.DirectorySeparatorChar).Last().Split('-')[1];
            string folderName     = rootFolderName == localeFolderName ? localeFolderName : "Data";

            string[] filePathSegments = file.Split(Path.DirectorySeparatorChar);
            string   fileName         = filePathSegments[filePathSegments.Length - 1];

            var updateFile = new UpdateFile(fileName, folderName, HashHelper.GetMD5HashOfFile(file), fileInfo.Length);

            return(updateFile);
        }
Пример #3
0
        /// <summary>
        /// Инициализирует текущий экземпляр информации о патче посредством разбора переданного форматированного текста.
        /// </summary>
        /// <param name="patchList">
        /// Форматированный текст, представляющий из себя
        /// список информации о файлах для обновления</param>
        /// <exception cref="ArgumentNullException">Генерирует, если один из переданных параметров равен null</exception>
        public PatchInfo(string patchList)
        {
            if (patchList == null)
            {
                throw new ArgumentNullException("patchList");
            }

            string[]     formattedLines = patchList.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            UpdateFile[] updateFiles    = new UpdateFile[formattedLines.Length];

            long sumOfLenght = 0L;

            for (int i = 0; i < formattedLines.Length; i++)
            {
                UpdateFile updateFile = UpdateFile.FromString(formattedLines[i]);
                updateFiles[i] = updateFile;
                sumOfLenght   += updateFile.FileSize;
            }
            PatchLength = sumOfLenght;

            UpdateFiles = updateFiles;
        }