/
Update-OnETagChanged.ps1
50 lines (43 loc) · 1.21 KB
/
Update-OnETagChanged.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# NOTE: No documentation will be written for this script.
# This is only a temporary script until a generic version
# have been added to the wormies-au-helpers powershell package
function Update-OnETagChanged() {
param(
[uri]$execUrl,
[string]$saveFile = ".\info",
[scriptblock]$OnETagChanged,
[scriptblock]$OnUpdated
)
$request = [System.Net.WebRequest]::CreateDefault($execUrl)
try {
$response = $request.GetResponse()
$etag = $response.Headers.Get("ETag")
}
finally {
$response.Dispose()
$response = $null
}
$saveResult = $false
if (!(Test-Path $saveFile) -or ($global:au_Force -eq $true)) {
$result = . $OnETagChanged
$saveResult = $true
}
else {
$existingInfo = (Get-Content $saveFile -Encoding UTF8 -TotalCount 1) -split '\|'
if ($existingInfo[0] -ne $etag) {
$result = . $OnETagChanged
$saveResult = $true
}
else {
$result = . $OnUpdated
$result["Version"] = $existingInfo[1]
$result["ETAG"] = $existingInfo[0]
$saveResult = $false
}
}
if ($saveResult) {
$result["ETAG"] = $etag
"$($result["ETAG"])|$($result["Version"])" | Out-File $saveFile -Encoding utf8 -NoNewline
}
return $result
}