Public/Disconnect-MyWebApi.ps1
|
function Disconnect-MyWebApi { <# .SYNOPSIS Clears and disposes one WebAPI session. .PARAMETER Connection A session returned by Connect-MyWebApi. Omitting it disconnects the optional default. #> [CmdletBinding()] param([object] $Connection) $ctx = Resolve-MyWebApiContext -Connection $Connection if ([bool](Get-MyWebApiContextProperty -Context $ctx -Name 'Disposed')) { return } $source = Get-MyWebApiContextProperty -Context $ctx -Name 'CancellationSource' if ($source) { try { $source.Cancel() } catch { Write-Verbose "Cancellation failed: $($_.Exception.Message)" } } Set-MyWebApiContextProperty -Context $ctx -Name 'Disposed' -Value $true $secret = Get-MyWebApiContextProperty -Context $ctx -Name 'ClientSecret' if ($secret -is [System.Security.SecureString]) { try { $secret.Dispose() } catch { Write-Verbose "SecureString disposal failed: $($_.Exception.Message)" } } $gate = Get-MyWebApiContextProperty -Context $ctx -Name 'RefreshGate' if ($gate) { try { $gate.Dispose() } catch { Write-Verbose "Token refresh gate disposal failed: $($_.Exception.Message)" } } if ([object]::ReferenceEquals($script:MyWebApiContext, $ctx)) { $script:MyWebApiContext = $null } } |