diff --git a/CHANGELOG.md b/CHANGELOG.md index 5777bd06..2e48571c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.9.4] - 2024-05-31 + +### Changed + +- Fix MultipartBody serialization + ## [1.9.3] - 2024-05-28 ### Changed - Fix time formatting for other cultures. -- Fix MultipartBody serialization ## [1.9.2] - 2024-05-24 diff --git a/src/Microsoft.Kiota.Abstractions.csproj b/src/Microsoft.Kiota.Abstractions.csproj index d4365c58..6d4a9f69 100644 --- a/src/Microsoft.Kiota.Abstractions.csproj +++ b/src/Microsoft.Kiota.Abstractions.csproj @@ -15,7 +15,7 @@ https://aka.ms/kiota/docs true true - 1.9.3 + 1.9.4 true false diff --git a/src/MultipartBody.cs b/src/MultipartBody.cs index 6ced3fb1..c785cccb 100644 --- a/src/MultipartBody.cs +++ b/src/MultipartBody.cs @@ -139,23 +139,13 @@ public void Serialize(ISerializationWriter writer) { using var partWriter = RequestAdapter.SerializationWriterFactory.GetSerializationWriter(part.ContentType); partWriter.WriteObjectValue(string.Empty, parsable); - using var partContent = partWriter.GetSerializedContent(); - if(partContent.CanSeek) - partContent.Seek(0, SeekOrigin.Begin); - using var ms = new MemoryStream(); - partContent.CopyTo(ms); - writer.WriteByteArrayValue(string.Empty, ms.ToArray()); + WriteSerializedContent(writer, partWriter); } else if(part.Content is string currentString) { using var partWriter = RequestAdapter.SerializationWriterFactory.GetSerializationWriter(part.ContentType); partWriter.WriteStringValue(string.Empty, currentString); - using var partContent = partWriter.GetSerializedContent(); - if(partContent.CanSeek) - partContent.Seek(0, SeekOrigin.Begin); - using var ms = new MemoryStream(); - partContent.CopyTo(ms); - writer.WriteByteArrayValue(string.Empty, ms.ToArray()); + WriteSerializedContent(writer, partWriter); } else if(part.Content is MemoryStream originalMemoryStream) { @@ -191,6 +181,16 @@ private void AddNewLine(ISerializationWriter writer) writer.WriteStringValue(string.Empty, string.Empty); } + private void WriteSerializedContent(ISerializationWriter writer, ISerializationWriter partWriter) + { + using var partContent = partWriter.GetSerializedContent(); + if(partContent.CanSeek) + partContent.Seek(0, SeekOrigin.Begin); + using var ms = new MemoryStream(); + partContent.CopyTo(ms); + writer.WriteByteArrayValue(string.Empty, ms.ToArray()); + } + private class Part { public Part(string name, object content, string contentType, string? fileName)