diff --git a/modules/openapi-generator/src/main/resources/powershell/api.mustache b/modules/openapi-generator/src/main/resources/powershell/api.mustache index 114d14c81ce..2024cd79ff8 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api.mustache @@ -221,7 +221,8 @@ function {{{vendorExtensions.x-powershell-method-name}}} { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "{{#returnType}}{{{.}}}{{/returnType}}" + -ReturnType "{{#returnType}}{{{.}}}{{/returnType}}" ` + -IsBodyNullable {{#bodyParam}}{{#isNullable}}$true{{/isNullable}}{{^isNullable}}$false{{/isNullable}}{{/bodyParam}}{{^bodyParam}}$false{{/bodyParam}} {{#vendorExtensions.x-ps-return-type-one-of}} # process oneOf response diff --git a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache index 95b23b26d5f..a8af6c94f32 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache @@ -26,7 +26,9 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { [string]$Method, [Parameter(Mandatory)] [AllowEmptyString()] - [string]$ReturnType + [string]$ReturnType, + [Parameter(Mandatory)] + [bool]$IsBodyNullable ) 'Calling method: Invoke-{{{apiNamePrefix}}}ApiClient' | Write-Debug @@ -85,8 +87,11 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { $RequestBody = $FormParameters } - if ($Body) { + if ($Body -or $IsBodyNullable) { $RequestBody = $Body + if ([string]::IsNullOrEmpty($RequestBody) -and $IsBodyNullable -eq $true) { + $RequestBody = "null" + } } {{#hasHttpSignatureMethods}} diff --git a/samples/client/petstore/powershell/Test1.ps1 b/samples/client/petstore/powershell/Test1.ps1 index cf00308684a..e695e672806 100644 --- a/samples/client/petstore/powershell/Test1.ps1 +++ b/samples/client/petstore/powershell/Test1.ps1 @@ -27,13 +27,14 @@ $Id = 38369 ) -Status Available #Write-Host $pet - $Result = Add-PSPet -Pet $pet + #$Result = Add-PSPet -Pet $pet + $Result = Add-PSPet -Pet $null Set-PSConfigurationApiKey -Id "api_key" -ApiKey "zzZZZZZZZZZZZZZ" $Result2 = Get-PSPetById -petId ($Id) -Verbose -WithHttpInfo #-testHeader "testing only" -testQuery "testing something here" Write-Host $Result2["Headers"]["Content-Type"] - $Result3 = Get-PSPetById -petId ($Id) -Verbose -WithHttpInfo -ReturnType "application/xml" #-testHeader "testing only" -testQuery "testing something here" - Write-Host $Result3["Headers"]["Content-Type"] - Write-Host $Result3["Response"] + #$Result3 = Get-PSPetById -petId ($Id) -Verbose -WithHttpInfo -ReturnType "application/xml" #-testHeader "testing only" -testQuery "testing something here" + #Write-Host $Result3["Headers"]["Content-Type"] + #Write-Host $Result3["Response"] #} catch { # Write-Host ("Exception occured when calling '': {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) # Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) diff --git a/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 index fd9df6cce81..4024745d0ca 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 @@ -85,7 +85,8 @@ function Add-PSPet { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Pet" + -ReturnType "Pet" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -165,7 +166,8 @@ function Remove-Pet { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -252,7 +254,8 @@ function Find-PSPetsByStatus { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Pet[]" + -ReturnType "Pet[]" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -338,7 +341,8 @@ function Find-PSPetsByTags { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Pet[]" + -ReturnType "Pet[]" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -427,7 +431,8 @@ function Get-PSPetById { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Pet" + -ReturnType "Pet" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -517,7 +522,8 @@ function Update-PSPet { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Pet" + -ReturnType "Pet" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -610,7 +616,8 @@ function Update-PSPetWithForm { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -706,7 +713,8 @@ function Invoke-PSUploadFile { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "ApiResponse" + -ReturnType "ApiResponse" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult diff --git a/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 index dc4ffa2b974..ae56dcdd258 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 @@ -64,7 +64,8 @@ function Remove-PSOrder { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -131,7 +132,8 @@ function Get-PSInventory { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "System.Collections.Hashtable" + -ReturnType "System.Collections.Hashtable" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -215,7 +217,8 @@ function Get-PSOrderById { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Order" + -ReturnType "Order" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -304,7 +307,8 @@ function Invoke-PSPlaceOrder { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "Order" + -ReturnType "Order" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult diff --git a/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 index e6fb9a8e081..cbf47aace79 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 @@ -74,7 +74,8 @@ function New-PSUser { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -153,7 +154,8 @@ function New-PSUsersWithArrayInput { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -232,7 +234,8 @@ function New-PSUsersWithListInput { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -306,7 +309,8 @@ function Remove-PSUser { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -390,7 +394,8 @@ function Get-PSUserByName { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "User" + -ReturnType "User" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -486,7 +491,8 @@ function Invoke-PSLoginUser { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "String" + -ReturnType "String" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -550,7 +556,8 @@ function Invoke-PSLogoutUser { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult @@ -639,7 +646,8 @@ function Update-PSUser { -QueryParameters $LocalVarQueryParameters ` -FormParameters $LocalVarFormParameters ` -CookieParameters $LocalVarCookieParameters ` - -ReturnType "" + -ReturnType "" ` + -IsBodyNullable $false if ($WithHttpInfo.IsPresent) { return $LocalVarResult diff --git a/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 index e965758e23a..64e1407872c 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 @@ -32,7 +32,9 @@ function Invoke-PSApiClient { [string]$Method, [Parameter(Mandatory)] [AllowEmptyString()] - [string]$ReturnType + [string]$ReturnType, + [Parameter(Mandatory)] + [bool]$IsBodyNullable ) 'Calling method: Invoke-PSApiClient' | Write-Debug @@ -91,8 +93,11 @@ function Invoke-PSApiClient { $RequestBody = $FormParameters } - if ($Body) { + if ($Body -or $IsBodyNullable) { $RequestBody = $Body + if ([string]::IsNullOrEmpty($RequestBody) -and $IsBodyNullable -eq $true) { + $RequestBody = "null" + } } if ($SkipCertificateCheck -eq $true) {