Private/Invoke-ABRRequest.ps1
<#
.SYNOPSIS Query the API .DESCRIPTION Query the API service from Admin by Request .PARAMETER URI The specific URI that you want to target .PARAMETER Method The rest method required for the query (GET, POST, PUT, DELETE, ...) .PARAMETER Body The body that accompanies the POST method query .PARAMETER Headers The headers required to authenticate, enrich or filter the query .EXAMPLE PS C:\> Invoke-ABRRequest -URI '/requests' -Method 'Get' -Headers @{ status = 'Denied' } #> Function Invoke-ABRRequest { [CmdletBinding()] Param ( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string] $URI, [Parameter(ValueFromPipelineByPropertyName = $true, Position = 1)] [ValidateNotNullOrEmpty()] [Microsoft.PowerShell.Commands.WebRequestMethod] $Method = 'Get', [Parameter(ValueFromPipelineByPropertyName = $true, Position = 2)] [ValidateNotNullOrEmpty()] [object] $Body, [Parameter(ValueFromPipelineByPropertyName = $true, Position = 3)] [ValidateNotNullOrEmpty()] [hashtable] $Headers ) Process { #region Connection Requirements If ($null -eq $Script:ABR_API_URL) { Throw 'Missing connection information. You need to setup the connection settings first by using Set-ABRConnection function.' } If ($PSBoundParameters.ContainsKey('Headers')) { If (-not $Headers.ContainsKey('apikey')) { $Headers.Add('apikey', $Script:ABR_API_key) } } Else { $Headers = @{ apikey = $Script:ABR_API_key } } #endregion #region Verbose headers $Headers.GetEnumerator() | ForEach-Object { Write-Verbose -Message ('{0} => {1}' -f $_.Key, $_.Value) } #endregion #region Splat $ABR_InvokeRestMethod_Splat = @{ Method = $Method Headers = $Headers TimeoutSec = 60 URI = $Script:ABR_API_URL + $URI } #endregion #region Body check If ($PSBoundParameters.ContainsKey('Body')) { $ABR_InvokeRestMethod_Splat.Add('Body', $Body) } #endregion #region Query API $Result = Invoke-RestMethod @ABR_InvokeRestMethod_Splat $Result #endregion } } |