Modules/WorkloadHelpers/M365DSCServicesHubHelper.psm1
|
<#
.SYNOPSIS Invokes a Services Hub REST request. .DESCRIPTION Sends an authenticated REST request to the Services Hub workload using the current connection profile and returns the parsed response content when available. .PARAMETER Uri Specifies the target URI for the REST request. .PARAMETER Method Specifies the HTTP method to use. The default value is GET. .PARAMETER Body Specifies the request payload to send when the method supports a body. .OUTPUTS System.Collections.Hashtable #> function Invoke-M365DSCServicesHubWebRequest { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param( [Parameter(Mandatory = $true)] [System.String] $Uri, [Parameter()] [System.String] $Method = 'GET', [Parameter()] [System.Collections.Hashtable] $Body ) $headers = @{ Authorization = (Get-MSCloudLoginConnectionProfile -Workload 'EngageHub').AccessToken } $bodyValue = $null if (-not [System.String]::IsNullOrEmpty($Body)) { $bodyValue = ConvertTo-Json $Body -Depth 20 -Compress } try { $response = Invoke-WebRequest -Method $Method ` -Uri $Uri ` -Headers $headers ` -Body $bodyValue ` -ContentType 'application/json; charset=utf-8' ` -UseBasicParsing } catch { $streamReader = [System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream()) $ErrResp = $streamReader.ReadToEnd() | ConvertFrom-Json $streamReader.Close() throw $ErrResp } $result = $null if ($response.Content.Length -gt 0) { $result = ConvertFrom-Json $response.Content -ErrorAction SilentlyContinue } return $result } |