Private/invokeApiMethod.ps1
function invokeApiMethod { [CmdletBinding()] param ( [Parameter(Mandatory)] [string] $Method, [Parameter()] [System.Collections.IDictionary] $OptionalParameters = @{} ) process { if ($null -eq $script:SubsonicUri -or $null -eq $script:SubsonicCredential) { Write-Error -Message 'Not connected to a Subsonic server. Use Connect-PSubsonic.' return } $uriBuilder = [uribuilder]$script:SubsonicUri $uriBuilder.Path += $Method $params = getAuthQueryParams -ErrorAction Stop foreach ($key in $OptionalParameters.Keys.GetEnumerator()) { $params.Add($key, $OptionalParameters[$key]) } $uriBuilder.Query = $params.ToString() $response = (Invoke-RestMethod $uriBuilder.Uri -ErrorAction Stop).'subsonic-response' if ($null -ne $response.error) { Write-Error -Message "Subsonic API returned error code $($response.error.code): $($response.error.Message)" return } $response } } |