functions/internal/Save-PackageFromUrl.ps1
function Save-PackageFromUrl { [CmdLetbinding()] param($url, $OutFile, $PackageName, $Header,[Switch]$Force) try { $result = @{newVersion = $false } Write-Verbose "Getting webresponse $url" $PackageResponse = Get-WebResponse $Url -verbose Write-Verbose "Getting headers" $newETag = $PackageResponse.headers[$Header] $parentFolder = [IO.Path]::GetDirectoryName($OutFile) if (-not (Test-path $parentFolder)) { new-item $parentFolder -ItemType Directory } # $rw = invoke-webrequest -Uri $url $eTagFile = join-path $parentFolder "$PackageName.json" if ( test-path $eTagFile) { $oldetag = (get-content $eTagFile -Raw | convertfrom-json ).PackageHeader $result.OldKey = $oldetag } $result.Add("NewKey", $newETag) if ($Force -or "" -eq "$oldETag" -or $oldETag -ne $newETag ) { Write-Host "Old $Header $oldETag is different to new $Header $newETag" Write-Host "DownloadSize = $($PackageResponse.ContentLength) bytes" $Global:ProgressPreference="SilentlyContinue" Invoke-WebRequest $url -OutFile $OutFile @{PackageHeader = $newETag } | convertto-json | out-file $eTagFile $Result.newVersion = $true $Result.OutputFile = $OutFile } else{ Write-Host "Skipped download Force ($Force), OldTag ($OldTag), NewTag ($newETag)" } return [PSCustomObject]$Result } finally { } } Write-Host "Loading SaveS1Package" |