internal/functions/get-integrationresponse.ps1


function Get-IntegrationResponse {
    param(
        [Parameter(Mandatory = $true, Position = 1)]
        [System.Net.WebRequest]$WebRequest,
        [Parameter(Mandatory = $true, Position = 2)]
        [System.Net.HttpStatusCode]$ExpectedResult,
        [Parameter(Mandatory = $false, Position = 3)]
        [Switch] $GetContent
        
    )

    $integrationResponse = $null;
    $url = $null
    
    try {
        $url = $WebRequest.RequestURI.AbsoluteUri    
        $response = $WebRequest.GetResponse()
    }
    catch {
        
        Write-PSFMessage -Level Critical -Message "Request failed $url"  -Exception $_.Exception
        Stop-PSFFunction -StepsUpward 1 -Message "Stopping"
        return 
        
    }
    if ($response.StatusCode -eq $ExpectedResult) {

        Write-PSFMessage -Message "Request Ok $url" -Level Verbose
        $stream = $response.GetResponseStream()
    
        $streamReader = New-Object System.IO.StreamReader($stream);
        
        $integrationResponse = $streamReader.ReadToEnd()
        $streamReader.Close();
    }
    else {
        $statusDescription = $response.StatusDescription
        Write-PSFMessage -Message "Request failed $url, Status : $statusDescription" -Level Critical
        Stop-PSFFunction -StepsUpward 1 -Message "Stopping"
    }

    if ($GetContent -eq $true) {
        $integrationResponse
    }
    else {
        "Request Ok"
    }
}