Public/Connect-T1.ps1
|
function Connect-T1 { param( [Parameter(Mandatory,Position=0,ParameterSetName='uri-basic')] [Parameter(Mandatory,Position=0,ParameterSetName='uri-oauth')] [Uri] $Uri, [Parameter(Mandatory,Position=0,ParameterSetName='saas-basic')] [Parameter(Mandatory,Position=0,ParameterSetName='saas-oauth')] [string] $Instance, [Parameter(Mandatory,Position=1,ParameterSetName='uri-basic')] [Parameter(Mandatory,Position=1,ParameterSetName='saas-basic')] [PSCredential] $Credential, [Parameter(Mandatory,Position=1,ParameterSetName='uri-oauth')] [Parameter(Mandatory,Position=1,ParameterSetName='saas-oauth')] [string] $ClientId, [Parameter(Mandatory,Position=2,ParameterSetName='uri-oauth')] [Parameter(Mandatory,Position=2,ParameterSetName='saas-oauth')] [string] $ClientSecret ) if ($Instance) { $Uri = "https://$Instance.t1cloud.com/T1Default/CiAnywhere/Web/$Instance/" } if ($Uri.OriginalString -notlike '*`/') { $Uri = [uri]::new($Uri.OriginalString + '/') } $Script:_t1Uri = $Uri if ($PSCmdlet.ParameterSetName -like '*-oauth') { $params = @{ Uri = [uri]::new($Uri, 'oauth2/access_token') Method = 'Post' ContentType = 'application/x-www-form-urlencoded' Body = @{ 'client_id' = $ClientId 'client_secret' = $ClientSecret 'grant_type' = 'client_credentials' } } $Script:_t1Auth = 'Bearer ' + (Invoke-RestMethod @params).access_token return } # Use basic auth. $Script:_t1Auth = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($credential.UserName.ToUpper() + ':' + $credential.GetNetworkCredential().Password)) } |