functions/Get-DracoonNodeAsZip.ps1
function Get-DracoonNodeAsZip { <# .SYNOPSIS Creates a ZIP archive from given NodeIDs and downloads it. API-POST /v4/nodes/zip .DESCRIPTION Creates a ZIP archive from given NodeIDs and downloads it. .PARAMETER Connection Object of Class [Dracoon], stores the authentication Token and the API Base-URL .PARAMETER Id Array of NodeIDs which should be included into the ZIP file. .PARAMETER FileName Name of the downloaded ZIP file. .PARAMETER EnableException If set to true, inner exceptions will be rethrown. Otherwise the an empty result will be returned. .EXAMPLE Get-DracoonNode -connection $connection -ParentID $roomId | Get-DracoonNodeAsZip -Connection $connection -FileName "myArchive.zip" Creates a ZIP archive containing all files of the given room. .NOTES General notes #> param ( [parameter(Mandatory)] [Dracoon]$Connection, [parameter(Mandatory, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [int[]]$Id, [parameter(Mandatory)] $FileName, $EnableException = $false ) begin { $idArray = @() } process { $idArray += $id } end { Write-PSFMessage "Download ID: $($idArray -join ",")" $apiCallParameter = @{ Connection = $Connection method = "Post" Path = "/v4/nodes/zip" Body = @{ nodeIds = $idArray } } $result = Invoke-DracoonAPI @apiCallParameter if ($result) { Invoke-PSFProtectedCommand -Action "Downloading" -Target $FileName -ScriptBlock { Invoke-WebRequest -Uri $result.downloadUrl -OutFile $FileName -ErrorAction Stop } -PSCmdlet $PSCmdlet -EnableException $EnableException -RetryCount 4 -RetryWait 5 } } } |