Classes/003-SDPConnection.ps1

class SDPConnection {
    [string]$ApiBaseUri
    [string]$AccountsDomain
    [string]$ClientId
    [securestring]$ClientSecret
    [string]$AccessToken
    [datetime]$TokenExpiry

    SDPConnection([string]$apiBaseUri, [string]$accountsDomain, [string]$clientId, [securestring]$clientSecret) {
        $this.ApiBaseUri     = $apiBaseUri.TrimEnd('/')
        $this.AccountsDomain = $accountsDomain.TrimEnd('/')
        $this.ClientId       = $clientId
        $this.ClientSecret   = $clientSecret
        $this.TokenExpiry    = [datetime]::MinValue
    }

    [bool] IsTokenExpired() {
        return [datetime]::UtcNow -ge $this.TokenExpiry.AddSeconds(-60)
    }

    hidden [string] GetPlainSecret() {
        return [System.Net.NetworkCredential]::new([string]::Empty, $this.ClientSecret).Password
    }
}