metasys-env-vars.ps1
Set-StrictMode -Version 3 class MetasysEnvVars { static [string] getSiteHost() { return $env:METASYS_HOST } static [void] setSiteHost([string]$siteHost) { $env:METASYS_HOST = $siteHost } static [string] getVersion() { return $env:METASYS_VERSION } static [void] setVersion([string]$version) { $env:METASYS_VERSION = $version } static [DateTimeOffset] getExpires() { $aDate = [DateTimeOffset]::Now if ([DateTimeOffset]::TryParse($env:METASYS_EXPIRES, [ref]$aDate)) { return $aDate } return $null } static [void] setExpires([DateTimeOffset]$expires) { $env:METASYS_EXPIRES = $expires.ToString("o") } static [SecureString] getToken() { if ($env:METASYS_ACCESS_TOKEN) { return ConvertTo-SecureString $env:METASYS_ACCESS_TOKEN } return $null } static [void] setToken([SecureString]$token) { $env:METASYS_ACCESS_TOKEN = ConvertFrom-SecureString -SecureString $token } static [String] getTokenAsPlainText() { $secureToken = [MetasysEnvVars]::getToken() if ($secureToken) { return (ConvertFrom-SecureString -SecureString $secureToken -AsPlainText) } return $null } static [void] setTokenAsPlainText([String]$token) { [MetasysEnvVars]::setToken(($token | ConvertTo-SecureString -AsPlainText)) } static [string] getLast() { return $env:METASYS_LAST_RESPONSE } static [void] setLast([string]$last) { $env:METASYS_LAST_RESPONSE = $last } static [void] clear() { $env:METASYS_ACCESS_TOKEN = $null $env:METASYS_EXPIRES = $null $env:METASYS_HOST = $null $env:METASYS_LAST_HEADERS = $null $env:METASYS_LAST_RESPONSE = $null $env:METASYS_LAST_STATUS_CODE = $null $env:METASYS_LAST_STATUS_DESCRIPTION = $null $env:METASYS_SKIP_CERTIFICATE_CHECK = $null $env:METASYS_USER_NAME = $null $env:METASYS_VERSION = $null } static [void] setHeaders([Hashtable]$headers) { $env:METASYS_LAST_HEADERS = ConvertTo-Json -Depth 15 $headers } static [string] getHeaders() { return $env:METASYS_LAST_HEADERS } static [void] setStatus([int]$code, [string]$description) { $env:METASYS_LAST_STATUS_CODE = $code $env:METASYS_LAST_STATUS_DESCRIPTION = $description } static [string] getStatus() { return "$($env:METASYS_LAST_STATUS_CODE) ($($env:METASYS_LAST_STATUS_DESCRIPTION))" } static [Boolean] getSkipCertificateCheck() { # Need to convert string value into Boolean if ($env:METASYS_SKIP_CERTIFICATE_CHECK -eq "True") { return $true } else { return $false } } static [void] setSkipCertificateCheck([Boolean]$SkipCertificateCheck) { $env:METASYS_SKIP_CERTIFICATE_CHECK = $SkipCertificateCheck } static [string] getUserName() { return $env:METASYS_USER_NAME } static [void] setUserName([String]$UserName) { $env:METASYS_USER_NAME = $UserName } } function Set-MetasysAccessToken { <# .SYNOPSIS Stores the token as a secure string in current session. .DESCRIPTION Using this command takes the place of using `Connect-MetasysAccount` and as such it takes many of the same parameters like `MetasysHost` and `Version`. If you have a valid Metasys token from a previous login, you can use it in your current session by setting it with this command. It's mandatory that you also include the `MetasysHost` If you know the expiration time include that in the call. If you don't provide an expiration time then the session will assume no expiration; however eventually the token will fail to work and you'll get an error. #> [CmdletBinding(PositionalBinding = $false)] param( [Parameter(Mandatory = $true)] [string]$AccessToken, [Parameter(Mandatory = $true)] [string]$MetasysHost, [DateTimeOffset]$Expires = [DateTimeOffset]::MaxValue, [switch]$SkipCertificateCheck, [string]$Version = "5" ) [MetasysEnvVars]::setTokenAsPlainText($AccessToken) [MetasysEnvVars]::setExpires($Expires) [MetasysEnvVars]::setSiteHost($MetasysHost) [MetasysEnvVars]::setSkipCertificateCheck($SkipCertificateCheck) if ($Version -eq "") { $Version = (Get-MetasysDefaultApiVersion) ?? (Get-MetasysLatestVersion) Write-Information "No version specified. Defaulting to v$Version" } [MetasysEnvVars]::setVersion($Version) } Export-ModuleMember -Function Set-MetasysAccessToken |