Private/Protocol/Open-Wormhole.ps1
|
function Open-Wormhole { [CmdletBinding()] param( [Parameter()] [string] $Code, [Parameter()] [string] $RelayUrl = $script:PowerWormholeDefaults.RelayUrl, [Parameter()] [string] $AppId = $script:PowerWormholeDefaults.AppId, [Parameter()] [switch] $AllocateCode ) Assert-WormholeRelayUrl -RelayUrl $RelayUrl Write-WormholeDebug -Component 'open' -Message 'Open-Wormhole invoked.' -Data @{ hasCode = (-not [string]::IsNullOrWhiteSpace($Code)); allocateCode = [bool]$AllocateCode; relayUrl = $RelayUrl; appId = $AppId } $side = New-WormholeSideId $nameplate = $null if (-not [string]::IsNullOrWhiteSpace($Code)) { $parts = $Code.Split('-') if ($parts.Count -lt 2) { throw 'Code must be in nameplate-word-word format.' } $nameplate = $parts[0] } elseif (-not $AllocateCode) { throw 'Provide -Code or specify -AllocateCode.' } $session = New-PowerWormholeSession -Code $Code -Nameplate $nameplate -RelayUrl $RelayUrl -AppId $AppId -Side $side Write-WormholeDebug -Component 'open' -Message 'Session object created.' -Session $session Connect-WormholeMailbox -Session $session | Out-Null Open-WormholeMailbox -Session $session -AllocateNameplate:$AllocateCode | Out-Null if ($AllocateCode) { $generatedCode = New-WormholeCode -Nameplate $session.Nameplate $session.Code = $generatedCode Write-WormholeDebug -Component 'open' -Message 'Generated code after nameplate allocation.' -Session $session -Data @{ code = $session.Code } } Write-WormholeDebug -Component 'open' -Message 'Open-Wormhole completed.' -Session $session $session } |