Skip to content

Commit d50246f

Browse files
chunyu3christothes
andauthored
add a funtion to convert BinaryData to RequestContent (Azure#39316)
* add serialize funtion for BinaryData * add more test * Update sdk/core/Azure.Core/src/Shared/RequestContentHelper.cs Co-authored-by: Christopher Scott <[email protected]> --------- Co-authored-by: Christopher Scott <[email protected]>
1 parent 86d40ef commit d50246f

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

sdk/core/Azure.Core/src/Shared/RequestContentHelper.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,15 @@ public static RequestContent FromObject(object value)
9494
content.JsonWriter.WriteObjectValue(value);
9595
return content;
9696
}
97+
public static RequestContent FromObject(BinaryData value)
98+
{
99+
var content = new Utf8JsonRequestContent();
100+
#if NET6_0_OR_GREATER
101+
content.JsonWriter.WriteRawValue(value);
102+
#else
103+
JsonSerializer.Serialize(content.JsonWriter, JsonDocument.Parse(value).RootElement);
104+
#endif
105+
return content;
106+
}
97107
}
98108
}

sdk/core/Azure.Core/tests/RequestContentHelperTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ public static IEnumerable<TestCaseData> GetOneDateTimeData()
2727
yield return new TestCaseData(DateTimeOffset.Parse("2022-08-26T18:38:00Z"));
2828
}
2929

30+
public static object[] BinaryDataCases =
31+
{
32+
new object[] { BinaryData.FromString("\"test\"") },
33+
new object[] { new BinaryData(1)},
34+
new object[] { new BinaryData(1.1)},
35+
new object[] { new BinaryData(true)},
36+
new object[] { BinaryData.FromObjectAsJson(new {name="a", age=1})},
37+
new object[] { new BinaryData(DateTimeOffset.Parse("2022-08-26T18:38:00Z"))}
38+
};
39+
3040
[TestCase(1, 2)]
3141
[TestCase("a", "b")]
3242
[TestCase(true, false)]
@@ -186,5 +196,16 @@ public void TestFromObject<T>(T value)
186196
break;
187197
}
188198
}
199+
200+
[TestCaseSource(nameof(BinaryDataCases))]
201+
public void TestFromObjectForBinaryData(BinaryData value)
202+
{
203+
var content = RequestContentHelper.FromObject(value);
204+
var stream = new MemoryStream();
205+
content.WriteTo(stream, default);
206+
stream.Position = 0;
207+
var document = JsonDocument.Parse(stream);
208+
Assert.AreEqual(value.ToObjectFromJson(), BinaryData.FromString(document.RootElement.GetRawText()).ToObjectFromJson());
209+
}
189210
}
190211
}

0 commit comments

Comments
 (0)