SARA_utils.ps1


# Jul 8th 2019
function Call-AnalysisAPI
{
    [cmdletbinding()]
    Param(
        [ValidateSet('userInfo','tenantInfo','cloudCheck')]
        [String]$Command,
        [Parameter(Mandatory=$True)]
        [String]$AccessToken,
        [Parameter(Mandatory=$True)]
        [String]$Body,
        [Parameter(Mandatory=$False)]
        [String]$Url="https://api.diagnostics.office.com/v1/analysis"
    )
    Process
    {
        
        $headers =@{
                "Content-Type" = "application/json;odata=verbose"
                "Accept" = "application/json; charset=utf-8"
                "Authorization" = $(Create-AuthorizationHeader -AccessToken $AccessToken -ClientId "d3590ed6-52b3-4102-aeff-aad2292ab01c" -Resource "https://api.diagnostics.office.com")
                "x-ms-sara-api-version" = "schema-v1"
                "User-Agent" = "saraclient"

        }
        
        try
        {
            $response = Invoke-RestMethod -UseBasicParsing -Uri $url -Method Post -Body $body -Headers $headers
        
        }
        catch
        {
            # Okay, something went wrong
            return $null
        }

        if($url.EndsWith("/analysis"))
        {
            $sessionId = $response.SessionId
        }
        else
        {
            $sessionId = $response.RequestId
        }

        while($response.RequestStatus -ne "Completed" -and $response.RequestStatus -ne "Failed")
        {
            Write-Verbose "Retrieving information.."
            if($response.ProcessingStatus -eq "Queued")
            {
                Start-Sleep -Seconds "2"
            }
            $response = Invoke-RestMethod -UseBasicParsing -Uri "$url/?id=$sessionId" -Method Get -Headers $headers
        }

        # Return
        $response
    }
}