internal object GetFileHeader(long startPosition) { if (startPosition < 0) { throw new ArgumentNullException("startPosition"); } //читаем системный заголовок this.BlobStream.Seek(startPosition, SeekOrigin.Begin); byte[] systemHeaderBytes = new byte[BlobStreamAdapter.SystemHeaderLength]; this.BlobStream.Read(systemHeaderBytes, 0, BlobStreamAdapter.SystemHeaderLength); //проверка целостности системного заголовка for (int i = 0; i < SystemHeaderFixedBytes.Length; i++) { if (SystemHeaderFixedBytes[i] != systemHeaderBytes[i]) { throw new Exception(string.Format("Битый заголовок файла (позиция {0}). Не удалось прочитать системный заголовок файла.", i)); } } //целостность системного заголовока не нарушена, значит можно поднять заголовок файла //сразу за фиксированной частью системного заголовка есть 4 байта, в которых указана длина заголовка файла //длина заголовка файла int headerLength = BitConverter.ToInt32(systemHeaderBytes, SystemHeaderFixedBytes.Length); if (headerLength < 1) { throw new Exception(string.Format("Не удалось считать длину заголовка файла")); } byte[] headerBytes = new byte[headerLength]; this.BlobStream.Seek(startPosition + BlobStreamAdapter.SystemHeaderLength, SeekOrigin.Begin); this.BlobStream.Read(headerBytes, 0, headerBytes.Length); int headerVersionNumber = BitConverter.ToInt32(systemHeaderBytes, SystemHeaderFixedBytes.Length + BlobConsts.BlobFile.HeaderSizeBytesLength + BlobConsts.BlobFile.AllHashBytesLength); object header = null; using (MemoryStream headerStream = new MemoryStream(headerBytes)) { headerStream.Position = 0; JsonBlobFileHeaderV1 typedHeader = JsonDataSerializer.Deserialize <JsonBlobFileHeaderV1>(headerStream); typedHeader.HeaderLength = headerLength; if (typedHeader.ContentLength == 0) { //длина на момент записи заголовка не была вычислина (потоковая передача) //смотрим эту длину по системному заголовку long contentLengBytesAbsolutePosition = FileStructure.GetContentLengBytesAbsolutePosition(); typedHeader.ContentLength = BitConverter.ToInt64(systemHeaderBytes, (int)contentLengBytesAbsolutePosition); } header = typedHeader; } return(header); }
public ViewResult ImportResources(bool?previewImport, HttpPostedFileBase importFile, bool?showMenu) { var model = new ImportResourcesViewModel { ShowMenu = showMenu ?? false }; if (importFile == null || importFile.ContentLength == 0) { return(View("ImportResources", model)); } var fileInfo = new FileInfo(importFile.FileName); if (fileInfo.Extension.ToLower() != ".json") { ModelState.AddModelError("file", "Uploaded file has different extension. Json file expected"); return(View("ImportResources", model)); } var importer = new ResourceImporter(); var serializer = new JsonDataSerializer(); var streamReader = new StreamReader(importFile.InputStream); var fileContent = streamReader.ReadToEnd(); try { var newResources = serializer.Deserialize <IEnumerable <LocalizationResource> >(fileContent); if (previewImport.HasValue && previewImport.Value) { var changes = importer.DetectChanges(newResources, new GetAllResources.Query().Execute()); var availableLanguagesQuery = new AvailableLanguages.Query(); var languages = availableLanguagesQuery.Execute(); var previewModel = new PreviewImportResourcesViewModel(changes, showMenu ?? false, languages); return(View("ImportPreview", previewModel)); } var result = importer.Import(newResources, previewImport ?? true); ViewData["LocalizationProvider_ImportResult"] = result; } catch (Exception e) { ModelState.AddModelError("importFailed", $"Import failed! Reason: {e.Message}"); } return(View("ImportResources", model)); }
public void JsonDataSerializer_DeserializeJsonData_Success() { // Arrange var data = @"{""Alpha2Code"":""mt""}"; var mockCountry = new MockCountry() { Alpha2Code = "mt" }; // Act var country = _sut.Deserialize(data); // Assert Assert.NotNull(country); Assert.Equal(mockCountry.Alpha2Code, country.Alpha2Code); }
public void JsonSerializationAndDeserlializationTest() { DataContext dataContext = new DataContext(); IDataFiller dataFiller = new DataManualFiller(); dataFiller.InsertData(dataContext); JsonDataSerializer.Serialize(dataContext, pathToFile); DataContext deserializedDataContext = JsonDataSerializer.Deserialize <DataContext>(pathToFile); CollectionAssert.AreEqual(dataContext.Clients, deserializedDataContext.Clients); CollectionAssert.AreEqual(dataContext.Cars, deserializedDataContext.Cars); CollectionAssert.AreEqual(dataContext.WarehouseItems, deserializedDataContext.WarehouseItems); CollectionAssert.AreEqual(dataContext.BoughtCars, deserializedDataContext.BoughtCars); CollectionAssert.AreEqual(dataContext.SoldCars, deserializedDataContext.SoldCars); }
private object GetFileHeader(byte[] contentWithHeadersData) { if (contentWithHeadersData == null) { throw new ArgumentNullException("fileData"); } object header = null; //сразу за системным заголовком 4 байта, в которых указана длина заголовка файла //длина заголовка файла int headerLength = BitConverter.ToInt32(contentWithHeadersData, SystemHeaderFixedBytes.Length); if (headerLength < 1) { throw new Exception(string.Format("Не удалось считать длину заголовка файла")); } byte[] headerBytes = new byte[headerLength]; Array.Copy(contentWithHeadersData, BlobStreamAdapter.SystemHeaderLength, headerBytes, 0, headerLength); int headerVersionNumber = BitConverter.ToInt32(contentWithHeadersData, SystemHeaderFixedBytes.Length + BlobConsts.BlobFile.HeaderSizeBytesLength + BlobConsts.BlobFile.AllHashBytesLength); using (MemoryStream headerStream = new MemoryStream(headerBytes)) { headerStream.Position = 0; JsonBlobFileHeaderV1 typedHeader = JsonDataSerializer.Deserialize <JsonBlobFileHeaderV1>(headerStream); typedHeader.HeaderLength = headerLength; if (typedHeader.ContentLength == 0) { //длина на момент записи заголовка не была вычислина (потоковая передача) //смотрим эту длину по системному заголовку long contentLengBytesAbsolutePosition = FileStructure.GetContentLengBytesAbsolutePosition(); typedHeader.ContentLength = BitConverter.ToInt64(contentWithHeadersData, (int)contentLengBytesAbsolutePosition); } header = typedHeader; } return(header); }
/// <summary> /// Получение котировок. /// </summary> /// <param name="state"></param> private void GetQuotes(object state) { try { IPEndPoint endPoint = null; byte[] result = _client.Receive(ref endPoint); QuoteDTO quote = JsonDataSerializer.Deserialize <QuoteDTO>(result); //обновление статистики Statistics.UpdateStatistics(quote.Price); } catch (SocketException ex) { OnSocketError(ex.SocketErrorCode); } catch (Exception ex) { throw new Exception($"В процессе получения котировок произошла неожиданная ошибка: {ex}"); } }
public ViewResult ImportResources(bool?importOnlyNewContent, HttpPostedFileBase importFile, bool?showMenu) { var model = new ImportResourcesViewModel { ShowMenu = showMenu ?? false }; if (importFile == null || importFile.ContentLength == 0) { return(View("ImportResources", model)); } var fileInfo = new FileInfo(importFile.FileName); if (fileInfo.Extension.ToLower() != ".json") { ModelState.AddModelError("file", "Uploaded file has different extension. Json file expected"); return(View("ImportResources", model)); } var importer = new ResourceImporter(); var serializer = new JsonDataSerializer(); var streamReader = new StreamReader(importFile.InputStream); var fileContent = streamReader.ReadToEnd(); try { var newResources = serializer.Deserialize <IEnumerable <LocalizationResource> >(fileContent); var result = importer.Import(newResources, importOnlyNewContent ?? true); ViewData["LocalizationProvider_ImportResult"] = result; } catch (Exception e) { ModelState.AddModelError("importFailed", $"Import failed! Reason: {e.Message}"); } return(View("ImportResources", model)); }
public void TestDeserialization() { string input = @"[ { ""id"": 1, ""resourceKey"": ""test-key"", ""modificationDate"": ""2016-01-01T00:00:00Z"", ""author"": ""migration-tool"", ""translations"": [ { ""id"": 11, ""language"": ""en"", ""value"": ""test value"" } ] } ]"; var serializer = new JsonDataSerializer(); var result = serializer.Deserialize <List <LocalizationResource> >(input); Assert.NotNull(result); Assert.Equal(1, result.Count); }
public void TestDeserialization() { string input = @"[ { ""id"": 1, ""resourceKey"": ""test-key"", ""modificationDate"": ""2016-01-01T00:00:00Z"", ""author"": ""migration-tool"", ""translations"": [ { ""id"": 11, ""language"": ""en"", ""value"": ""test value"" } ] } ]"; var serializer = new JsonDataSerializer(); var result = serializer.Deserialize<List<LocalizationResource>>(input); Assert.NotNull(result); Assert.Equal(1, result.Count); }
public T Deserialize <T>(Stream stream) { return(_dataSerializer.Deserialize <T>(stream)); }