Private/Invoke-CloudRadialAPI.ps1
function Invoke-CloudRadialAPI { param ( [string]$Method, [string]$Path, [hashtable]$QueryParams = @{}, [hashtable]$Body = @{}, [hashtable]$Headers = @{} ) if (-not $global:Connected) { Write-Error "Not connected to CloudRadial API. Please use Connect-CloudRadialAPI first." return $null } # Merge headers $allHeaders = $global:CloudRadialAPIHeaders + $Headers # Construct the query string $queryString = ($QueryParams.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join "&" $baseUrl = "https://api.us.cloudradial.com" $url = "$($baseUrl)$($Path)" if ($queryString) { $url = "$($url)?$($queryString)" } # Debugging output #Write-Host "Debug: Method = $Method" #Write-Host "Debug: Path = $Path" #Write-Host "Debug: QueryParams = $($QueryParams | Out-String)" #Write-Host "Debug: Headers = $($allHeaders | Out-String)" #Write-Host "Debug: URL = $url" try { if ($Method -eq 'GET' -or $Method -eq 'DELETE') { if ($Method -eq 'DELETE' -and $Body) { $response = Invoke-RestMethod -Method $Method -Uri $url -Headers $allHeaders -Body (ConvertTo-Json -InputObject $Body) } else { $response = Invoke-RestMethod -Method $Method -Uri $url -Headers $allHeaders } } else { $response = Invoke-RestMethod -Method $Method -Uri $url -Headers $allHeaders -Body ($Body | ConvertTo-Json) } return $response } catch { Write-Error "Error invoking CloudRadial API: $_" return $null } } |