diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs
index f75de9b00..c267ad81f 100644
--- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs
+++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs
@@ -1089,9 +1089,6 @@ namespace Microsoft.PowerShell.Commands
if (Form is not null)
{
- // Content headers will be set by MultipartFormDataContent which will throw unless we clear them first
- WebSession.ContentHeaders.Clear();
-
var formData = new MultipartFormDataContent();
foreach (DictionaryEntry formEntry in Form)
{
@@ -1101,55 +1098,48 @@ namespace Microsoft.PowerShell.Commands
SetRequestContent(request, formData);
}
- // coerce body into a usable form
else if (Body is not null)
{
+ // Coerce body into a usable form
object content = Body;
- // make sure we're using the base object of the body, not the PSObject wrapper
- PSObject psBody = Body as PSObject;
- if (psBody is not null)
+ // Make sure we're using the base object of the body, not the PSObject wrapper
+ if (Body is PSObject psBody)
{
content = psBody.BaseObject;
}
- if (content is FormObject form)
+ switch (content)
{
- SetRequestContent(request, form.Fields);
- }
- else if (content is IDictionary dictionary && request.Method != HttpMethod.Get)
- {
- SetRequestContent(request, dictionary);
- }
- else if (content is XmlNode xmlNode)
- {
- SetRequestContent(request, xmlNode);
- }
- else if (content is Stream stream)
- {
- SetRequestContent(request, stream);
- }
- else if (content is byte[] bytes)
- {
- SetRequestContent(request, bytes);
- }
- else if (content is MultipartFormDataContent multipartFormDataContent)
- {
- WebSession.ContentHeaders.Clear();
- SetRequestContent(request, multipartFormDataContent);
- }
- else
- {
- SetRequestContent(
- request,
- (string)LanguagePrimitives.ConvertTo(content, typeof(string), CultureInfo.InvariantCulture));
+ case FormObject form:
+ SetRequestContent(request, form.Fields);
+ break;
+ case IDictionary dictionary when request.Method != HttpMethod.Get:
+ SetRequestContent(request, dictionary);
+ break;
+ case XmlNode xmlNode:
+ SetRequestContent(request, xmlNode);
+ break;
+ case Stream stream:
+ SetRequestContent(request, stream);
+ break;
+ case byte[] bytes:
+ SetRequestContent(request, bytes);
+ break;
+ case MultipartFormDataContent multipartFormDataContent:
+ SetRequestContent(request, multipartFormDataContent);
+ break;
+ default:
+ SetRequestContent(request, (string)LanguagePrimitives.ConvertTo(content, typeof(string), CultureInfo.InvariantCulture));
+ break;
}
}
- else if (InFile is not null) // copy InFile data
+ else if (InFile is not null)
{
+ // Copy InFile data
try
{
- // open the input file
+ // Open the input file
SetRequestContent(request, new FileStream(InFile, FileMode.Open, FileAccess.Read, FileShare.Read));
}
catch (UnauthorizedAccessException)
@@ -1574,24 +1564,17 @@ namespace Microsoft.PowerShell.Commands
///
/// The WebRequest who's content is to be set.
/// A byte array containing the content data.
- /// The number of bytes written to the requests RequestStream (and the new value of the request's ContentLength property.
///
/// Because this function sets the request's ContentLength property and writes content data into the requests's stream,
/// it should be called one time maximum on a given request.
///
- internal long SetRequestContent(HttpRequestMessage request, byte[] content)
+ internal void SetRequestContent(HttpRequestMessage request, byte[] content)
{
ArgumentNullException.ThrowIfNull(request);
+ ArgumentNullException.ThrowIfNull(content);
- if (content is null)
- {
- return 0;
- }
-
- var byteArrayContent = new ByteArrayContent(content);
+ ByteArrayContent byteArrayContent = new(content);
request.Content = byteArrayContent;
-
- return byteArrayContent.Headers.ContentLength.Value;
}
///
@@ -1599,19 +1582,14 @@ namespace Microsoft.PowerShell.Commands
///
/// The WebRequest who's content is to be set.
/// A String object containing the content data.
- /// The number of bytes written to the requests RequestStream (and the new value of the request's ContentLength property.
///
/// Because this function sets the request's ContentLength property and writes content data into the requests's stream,
/// it should be called one time maximum on a given request.
///
- internal long SetRequestContent(HttpRequestMessage request, string content)
+ internal void SetRequestContent(HttpRequestMessage request, string content)
{
ArgumentNullException.ThrowIfNull(request);
-
- if (content is null)
- {
- return 0;
- }
+ ArgumentNullException.ThrowIfNull(content);
Encoding encoding = null;
if (ContentType is not null)
@@ -1631,7 +1609,7 @@ namespace Microsoft.PowerShell.Commands
{
if (!SkipHeaderValidation)
{
- var outerEx = new ValidationMetadataException(WebCmdletStrings.ContentTypeException, ex);
+ ValidationMetadataException outerEx = new(WebCmdletStrings.ContentTypeException, ex);
ErrorRecord er = new(outerEx, "WebCmdletContentTypeException", ErrorCategory.InvalidArgument, ContentType);
ThrowTerminatingError(er);
}
@@ -1639,20 +1617,14 @@ namespace Microsoft.PowerShell.Commands
}
byte[] bytes = StreamHelper.EncodeToBytes(content, encoding);
- var byteArrayContent = new ByteArrayContent(bytes);
+ ByteArrayContent byteArrayContent = new(bytes);
request.Content = byteArrayContent;
-
- return byteArrayContent.Headers.ContentLength.Value;
}
- internal long SetRequestContent(HttpRequestMessage request, XmlNode xmlNode)
+ internal void SetRequestContent(HttpRequestMessage request, XmlNode xmlNode)
{
ArgumentNullException.ThrowIfNull(request);
-
- if (xmlNode is null)
- {
- return 0;
- }
+ ArgumentNullException.ThrowIfNull(xmlNode);
byte[] bytes = null;
XmlDocument doc = xmlNode as XmlDocument;
@@ -1667,10 +1639,9 @@ namespace Microsoft.PowerShell.Commands
bytes = StreamHelper.EncodeToBytes(xmlNode.OuterXml, encoding: null);
}
- var byteArrayContent = new ByteArrayContent(bytes);
- request.Content = byteArrayContent;
+ ByteArrayContent byteArrayContent = new(bytes);
- return byteArrayContent.Headers.ContentLength.Value;
+ request.Content = byteArrayContent;
}
///
@@ -1678,21 +1649,17 @@ namespace Microsoft.PowerShell.Commands
///
/// The WebRequest who's content is to be set.
/// A Stream object containing the content data.
- /// The number of bytes written to the requests RequestStream (and the new value of the request's ContentLength property.
///
/// Because this function sets the request's ContentLength property and writes content data into the requests's stream,
/// it should be called one time maximum on a given request.
///
- internal long SetRequestContent(HttpRequestMessage request, Stream contentStream)
+ internal void SetRequestContent(HttpRequestMessage request, Stream contentStream)
{
ArgumentNullException.ThrowIfNull(request);
-
ArgumentNullException.ThrowIfNull(contentStream);
- var streamContent = new StreamContent(contentStream);
+ StreamContent streamContent = new(contentStream);
request.Content = streamContent;
-
- return streamContent.Headers.ContentLength.Value;
}
///
@@ -1700,30 +1667,28 @@ namespace Microsoft.PowerShell.Commands
///
/// The WebRequest who's content is to be set.
/// A MultipartFormDataContent object containing multipart/form-data content.
- /// The number of bytes written to the requests RequestStream (and the new value of the request's ContentLength property.
///
/// Because this function sets the request's ContentLength property and writes content data into the requests's stream,
/// it should be called one time maximum on a given request.
///
- internal long SetRequestContent(HttpRequestMessage request, MultipartFormDataContent multipartContent)
+ internal void SetRequestContent(HttpRequestMessage request, MultipartFormDataContent multipartContent)
{
ArgumentNullException.ThrowIfNull(request);
-
ArgumentNullException.ThrowIfNull(multipartContent);
+
+ // Content headers will be set by MultipartFormDataContent which will throw unless we clear them first
+ WebSession.ContentHeaders.Clear();
request.Content = multipartContent;
-
- return multipartContent.Headers.ContentLength.Value;
}
- internal long SetRequestContent(HttpRequestMessage request, IDictionary content)
+ internal void SetRequestContent(HttpRequestMessage request, IDictionary content)
{
ArgumentNullException.ThrowIfNull(request);
-
ArgumentNullException.ThrowIfNull(content);
string body = FormatDictionary(content);
- return SetRequestContent(request, body);
+ SetRequestContent(request, body);
}
internal void ParseLinkHeader(HttpResponseMessage response, System.Uri requestUri)