diff --git a/SnipeitPS/Private/ConvertTo-GetParameter.ps1 b/SnipeitPS/Private/ConvertTo-GetParameter.ps1 new file mode 100644 index 0000000..7afd8c9 --- /dev/null +++ b/SnipeitPS/Private/ConvertTo-GetParameter.ps1 @@ -0,0 +1,25 @@ +function ConvertTo-GetParameter { + <# + .SYNOPSIS + Generate the GET parameter string for an URL from a hashtable + #> + [CmdletBinding()] + param ( + [Parameter( Position = 0, Mandatory = $true, ValueFromPipeline = $true )] + [hashtable]$InputObject + ) + + BEGIN { + [string]$parameters = "?" + } + + PROCESS { + Write-Verbose "[$($MyInvocation.MyCommand.Name)] Making HTTP get parameter string out of a hashtable" + foreach ($key in $InputObject.Keys) { + $parameters += "$key=$($InputObject[$key])&" + } + } + + END { + $parameters -replace ".$" + } \ No newline at end of file diff --git a/SnipeitPS/Private/Invoke-Method.psm1 b/SnipeitPS/Private/Invoke-Method.psm1 index ab49489..a5188a4 100644 --- a/SnipeitPS/Private/Invoke-Method.psm1 +++ b/SnipeitPS/Private/Invoke-Method.psm1 @@ -19,7 +19,11 @@ [ValidateNotNullOrEmpty()] [string]$Body, - [string] $Token + [string] $Token, + + # GET Parameters + [Hashtable]$GetParameters + ) BEGIN { @@ -38,6 +42,14 @@ } Process { + if ($GetParameters -and ($URi -notlike "*\?*")) + { + Write-Debug "Using `$GetParameters: $($GetParameters | Out-String)" + [string]$URI += (ConvertTo-GetParameter $GetParameters) + # Prevent recursive appends + $GetParameters = $null + } + # set mandatory parameters $splatParameters = @{ Uri = $URi