functions/internal/Save-S1PackageFromUrl.ps1

function Save-PackageFromUrl {
    [CmdLetbinding()]
    param($url, $OutFile, $PackageName, $Header,[Switch]$Force)
    try {
        $result = @{newVersion = $false }
        $ProgressPreference = 'SilentlyContinue'
        [System.Net.HttpWebResponse] $PackageResponse = [System.Net.WebRequest]::Create($url).GetResponse();

        if (-not (Test-path packages)) { new-item packages -ItemType Directory }
        # $rw = invoke-webrequest -Uri $url
        $eTagFile = "$($PackageName)-ETag.json"
        if ( test-path $eTagFile) {
            $oldetag = (get-content $eTagFile -Raw | convertfrom-json ).PackageETag
            $result.OldKey = $oldetag
        } 
        $newETag = $PackageResponse.headers[$Header]
        $result.Add("NewKey", $newETag)
        $PackageResponse.Dispose();
        if ($Force -or "" -eq "$oldETag" -or $oldETag -ne $newETag ) {
            Write-Host "Old $Header $oldETag is different to new $Header $newETag"
            Invoke-WebRequest $url -OutFile $OutFile
            @{PackageETag = $newETag } | convertto-json | out-file $eTagFile
            $Result.newVersion = $true
            $Result.OutputFile = $OutFile
        }
        return [PSCustomObject]$Result
    }
    finally {
   
    }
}