Private/Invoke-DpaRequest.ps1
function Invoke-DpaRequest { [CmdletBinding()] param ( [Parameter()] $AccessToken, [Parameter(Mandatory)] $Endpoint, [Parameter()] $Request, [Parameter()] $Method = 'POST', [Parameter()] $Parameters ) if (-not $PSBoundParameters.ContainsKey('AccessToken') -or -not $AccessToken.IsValid()) { $AccessToken = Get-DpaAccessToken } $headers = @{ 'Accept' = 'application/json' 'Content-Type' = 'application/json;charset=UTF-8' 'Authorization' = $AccessToken.ToAuthorizationHeader() } $uri = (Get-DpaConfig -Name 'BaseUri').Value if (-not $uri.EndsWith('/') -and -not $Endpoint.StartsWith('/')) { $uri += '/' } $uri += $Endpoint if ($PSBoundParameters.ContainsKey('Parameters')) { $query = @() foreach ($parameter in $Parameters.GetEnumerator()) { $query += "$($parameter.Key)=" + [System.Web.HttpUtility]::UrlEncode([string]$parameter.Value) } $uri += '?' + ($query -join '&') } $params = @{ 'Uri' = $uri 'Headers' = $headers 'Method' = $Method } if ($PSBoundParameters.ContainsKey('Request')) { $params['Body'] = $Request | ConvertTo-Json Write-Verbose $params['Body'] } Invoke-RestMethod @params } |