psconfluencepublisher/tools/Connection.psm1

54 lines
1.5 KiB
PowerShell
Executable file

#!/usr/bin/env pwsh
$ErrorActionPreference = "Stop"
function Test-Connection
{
<#
.SYNOPSIS
Test the connectivity to a Confluence instance.
.DESCRIPTION
Just making an arbitrary authenticated HTTP request and making sure
that we're getting a 2xx status code back. This way we make sure
that network connectivity is fine, and that the PAT is valid.
It is required to register a PAT through
``Register-PersonalAccessToken`` beforehand.
.EXAMPLE
Test-Connection confluence.contoso.com
#>
Param(
[Parameter(Mandatory, Position = 0)] [string] $Host
)
Process
{
# Screw Invoke-RestMethod, how am i supposed to get a non 4xx status
# code? Catch a non-existent exception 🤷‍♀️????
Invoke-WebRequest `
-Uri "https://${Host}/rest/api/user/current" `
-Method 'Get' `
-Headers @{
'Authorization' = "Bearer $(Get-PersonalAccessToken $Host)"
} `
-OutVariable response
if(($response.Content | ConvertFrom-JSON).type -ne "known")
{
throw "personal access token for host '$Host' does not " +
"authenticate."
}
if ($response.StatusCode -eq 200)
{
Write-Host "Verified connectivity ($Host)."
}
else
{
throw "received status code other than 200 " +
"($($response.StatusCode))"
}
}
}