Private/Runtime/ConvertTo-OpenApiFormBody.ps1
|
function ConvertTo-OpenApiFormBody { <# .SYNOPSIS Encodes a hashtable or object as application/x-www-form-urlencoded text (arrays repeat the name, nested values as JSON). #> [CmdletBinding()] [OutputType([string])] param( [Parameter()] [AllowNull()] [object]$InputObject ) if ($null -eq $InputObject) { return '' } if ($InputObject -is [string]) { return $InputObject } $pairs = New-Object System.Collections.Generic.List[string] foreach ($property in (ConvertTo-OpenApiPropertyList -InputObject $InputObject)) { $name = ConvertTo-OpenApiUriEncoded -Value $property.Name $shape = Get-OpenApiValueShape -Value $property.Value if ($shape -eq 'Array') { foreach ($item in $property.Value) { $pairs.Add($name + '=' + (ConvertTo-OpenApiUriEncoded -Value (ConvertTo-OpenApiScalarString -Value $item))) } } else { $pairs.Add($name + '=' + (ConvertTo-OpenApiUriEncoded -Value (ConvertTo-OpenApiScalarString -Value $property.Value))) } } return ($pairs -join '&') } |