Classes/Public/MoveSession.ps1
|
class MoveSession { ## A Name parameter to identify the session in other -MoveSessions functions [String]$Name # Move Server hostname [string]$MoveServer # Move Server hostname port [int]$MovePort # MoveVersion drives the selection of compatible APIs to use [string]$MoveVersion # Logged in Move User's Context (indicates loggedin-ness) [pscustomobject]$UserContext # Token Expiry Date from Status.ExpiryDate API login response [datetime]$ExpirationDate # MoveWebSession Variable. Maintained by the Invoke-WebRequest function's capability [Microsoft.PowerShell.Commands.WebRequestSession]$MoveWebSession ## Tracks non-changing items to reduce HTTP lookups, and increase speed of scripts. ## DataCache is expected to be a k/v pair, where the V could be another k/v pair, ## However, it's implementation will be more of the nature to hold the list of object calls from the API ## like 'credentials' = @(@{...},@{...}); 'actions' = @(@{...},@{...}) ## Get-Move* functions will cache unless a -NoCache switch is provided [hashtable]$DataCache ## Should PowerShell ignore the SSL Cert on the Move Server? [bool]$AllowInsecureSSL MoveSession() { $this.Name = 'Default' $this.AllowInsecureSSL = $false $this.DataCache = @{} $this.UserContext = $null $this.MovePort = 9669 $this.MoveWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession } MoveSession([String]$_name = 'Default') { $this.Name = $_name $this.AllowInsecureSSL = $false $this.DataCache = @{} $this.UserContext = $null $this.MovePort = 9669 $this.MoveWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession } MoveSession([String]$_name = 'Default', [String]$_server, [Bool]$_allowInsecureSSL = $false) { $this.Name = $_name $this.AllowInsecureSSL = $_allowInsecureSSL $this.MoveServer = $_server $this.MovePort = 443 $this.DataCache = @{} $this.UserContext = $null $this.MoveWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession } MoveSession([String]$_name = 'Default', [String]$_server, [int]$_port, [Bool]$_allowInsecureSSL = $false) { $this.Name = $_name $this.AllowInsecureSSL = $_allowInsecureSSL $this.MoveServer = $_server $this.MovePort = $_port $this.DataCache = @{} $this.UserContext = $null $this.MoveWebSession = New-Object -Type Microsoft.PowerShell.Commands.WebRequestSession } [void] setExpirationDate([datetime]$loginRequestTime, [psobject] $status) { $tokenLifeTimeInSeconds = $status.ExpiryDate - $status.IssueDate $tokenExpirationDate = $loginRequestTime.AddSeconds($tokenLifeTimeInSeconds - 60) # 1-minute cushion $this.ExpirationDate = $tokenExpirationDate } } |