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"