Pax8API/Private/Assert-Pax8Session.ps1

function Assert-Pax8Session {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [string]$Audience
    )

    $resolvedAudience = Resolve-Pax8Audience -Audience $Audience
    $needsToken = [string]::IsNullOrWhiteSpace($script:Pax8Session.AccessToken)
    $needsToken = $needsToken -or $script:Pax8Session.ExpiresAt -le [datetimeoffset]::UtcNow.AddMinutes(5)
    $needsToken = $needsToken -or $script:Pax8Session.Audience -ne $resolvedAudience

    if (-not $needsToken) {
        return
    }

    if ($script:Pax8Session.Credential) {
        Connect-Pax8 -Credential $script:Pax8Session.Credential -Audience $resolvedAudience -BaseUri $script:Pax8Session.BaseUri -TokenUri $script:Pax8Session.TokenUri | Out-Null
        return
    }

    throw "Not connected to Pax8. Run Connect-Pax8 first, or set PAX8_CLIENT_ID and PAX8_CLIENT_SECRET before connecting."
}