Private/Get-Tunnel.ps1

<#
Copyright 2023 VMware, Inc.
SPDX-License-Identifier: BSD-2-Clause
#>

function Get-Tunnel {
    [CmdletBinding()]
    param (
        # VCDA Server
        [Parameter(Mandatory = $false)]
        [PSTypeName('VCDAServer')]$Server,
        # tunnel URL
        [Parameter(Mandatory = $false)]
        [ValidateScript({ [system.uri]::IsWellFormedUriString($_, 'Absolute') -and ([system.uri]$_).Scheme -eq 'https' -and ([Uri]$_).Port -eq 8047 }, `
                ErrorMessage = "'{0}' is not a tunnel API endpoint, it must be in the format 'https://tunnel-address:8047'")]
        [string]
        $url

    )

    process {
        try {
            $LocalvarServer = $Global:DefaultVCDAServer
            if ($null -ne $server) {
                $LocalvarServer = $server
            }

            $LocalvarInvokeParams = @{
                'path'   = '/config/tunnels'
                'method' = 'GET'
                'client' = $LocalvarServer
            }
            $LocalVarResponse = Invoke-VCDArequest @LocalvarInvokeParams
            if ($PSBoundParameters['url']) {
                return $LocalVarResponse.response.tunnels | Where-Object { $_.URL -like $url }
            }
            else {
                return $LocalVarResponse.Response.tunnels
            }
        }
        catch {
            $PSCmdlet.ThrowTerminatingError($_)
        }

    }
}