Public/Receive-Wormhole.ps1
|
function Receive-Wormhole { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string] $Code, [Parameter()] [ValidateScript({ Test-Path -Path $_ -PathType Container })] [string] $OutputDirectory = (Get-Location).Path, [Parameter()] [string] $RelayUrl = $script:PowerWormholeDefaults.RelayUrl, [Parameter()] [string] $AppId = $script:PowerWormholeDefaults.AppId, [Parameter()] [ValidateRange(1, 3600)] [int] $TimeoutSeconds = 300, [Parameter()] [switch] $NoStatus ) $session = $null try { Write-WormholeDebug -Component 'cmd-recv' -Message 'Receive-Wormhole invoked.' -Data @{ code = $Code; outputDirectory = $OutputDirectory; timeoutSeconds = $TimeoutSeconds; noStatus = [bool]$NoStatus } $session = Open-Wormhole -Code $Code -RelayUrl $RelayUrl -AppId $AppId $statusCallback = $null if (-not $NoStatus) { $statusCallback = { param($Message) Write-Host "[recv] $Message" } } $result = Invoke-WormholeReceiveProtocol -Session $session -OutputDirectory $OutputDirectory -TimeoutSeconds $TimeoutSeconds -StatusCallback $statusCallback if ($result.Type -eq 'file') { Write-Host "File saved to: $($result.FilePath)" } $result } finally { if ($null -ne $session) { Close-WormholeMailbox -Session $session -Mood 'happy' } } } |