Create manifest-validator.ps1
							parent
							
								
									350e2888aa
								
							
						
					
					
						commit
						fda2a4cf61
					
				@ -0,0 +1,62 @@
 | 
			
		||||
param (
 | 
			
		||||
    [Parameter(Mandatory)][string] $ManifestUrl,
 | 
			
		||||
    [string] $AccessToken
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
$authorizationHeaderValue = "Basic $AccessToken"
 | 
			
		||||
$webRequestHeaders = @{}
 | 
			
		||||
if ($AccessToken) {
 | 
			
		||||
    $webRequestHeaders.Add("Authorization", $authorizationHeaderValue)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function Publish-Error {
 | 
			
		||||
    param(
 | 
			
		||||
        [string] $ErrorDescription,
 | 
			
		||||
        [object] $Exception
 | 
			
		||||
    )
 | 
			
		||||
    Write-Host "##vso[task.logissue type=error]ERROR: $ErrorDescription."
 | 
			
		||||
    Write-Host "##vso[task.logissue type=error]    $Exception"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function Test-DownloadUrl {
 | 
			
		||||
    param([string] $DownloadUrl)
 | 
			
		||||
    $request = [System.Net.WebRequest]::Create($DownloadUrl)
 | 
			
		||||
    if ($AccessToken) {
 | 
			
		||||
        $request.Headers.Add("Authorization", $authorizationHeaderValue)
 | 
			
		||||
    }
 | 
			
		||||
    try {
 | 
			
		||||
        $response = $request.GetResponse()
 | 
			
		||||
        return ([int]$response.StatusCode -eq 200)
 | 
			
		||||
    } catch {
 | 
			
		||||
        return $false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Write-Host "Downloading manifest json from '$ManifestUrl'..."
 | 
			
		||||
try {
 | 
			
		||||
    $manifestResponse = Invoke-WebRequest -Method Get -Uri $ManifestUrl -Headers $webRequestHeaders
 | 
			
		||||
} catch {
 | 
			
		||||
    Publish-Error "Unable to download manifest json from '$ManifestUrl'" $_
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Write-Host "Parsing manifest json content from '$ManifestUrl'..."
 | 
			
		||||
try {
 | 
			
		||||
    $manifestJson = $manifestResponse.Content | ConvertFrom-Json
 | 
			
		||||
} catch {
 | 
			
		||||
    Publish-Error "Unable to parse manifest json content '$ManifestUrl'" $_
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$versionsList = $manifestJson.version
 | 
			
		||||
Write-Host "Found versions: $($versionsList -join ', ')"
 | 
			
		||||
 | 
			
		||||
$manifestJson | ForEach-Object {
 | 
			
		||||
    Write-Host "Validating version '$($_.version)'..."
 | 
			
		||||
    $_.files | ForEach-Object {
 | 
			
		||||
        Write-Host "    Validating '$($_.download_url)'..."
 | 
			
		||||
        if (-not (Test-DownloadUrl $_.download_url)) {
 | 
			
		||||
            Publish-Error "Url '$($_.download_url)' is invalid"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue