From 8dbcd9e89c16f0ead35433e11cd7c613bc609adf Mon Sep 17 00:00:00 2001
From: Martin Machacek <machacek@edhouse.cz>
Date: Thu, 30 May 2024 12:50:17 +0200
Subject: [PATCH] When MultipartBody is serialized the values are generated
 with CRLF

---
 CHANGELOG.md                            |  7 ++++++-
 src/Microsoft.Kiota.Abstractions.csproj |  2 +-
 src/MultipartBody.cs                    | 24 ++++++++++++------------
 3 files changed, 19 insertions(+), 14 deletions(-)

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 @@
     <PackageProjectUrl>https://aka.ms/kiota/docs</PackageProjectUrl>
     <EmbedUntrackedSources>true</EmbedUntrackedSources>
     <Deterministic>true</Deterministic>
-    <VersionPrefix>1.9.3</VersionPrefix>
+    <VersionPrefix>1.9.4</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
     <SignAssembly>false</SignAssembly>
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)