Public/Misc/Environment/Get-ApiCollectionConnection.ps1
function Get-ApiCollectionConnection { <# .SYNOPSIS Returns new connection object. Used to determine the correct url for the collection and the correct api version to use for given Url. Properties of the returned object are: - CollectionUri: Url for project collection on Azure DevOps server instance. - ApiCredential: Default ApiCredential object to use for authentication on given CollectionUri. - ApiVersion: Version of Azure DevOps API to use. .PARAMETER Uri Uri to Rest Api endpoint on Azure DevOps server instance. .PARAMETER CollectionUri Url for project collection on Azure DevOps server instance. If not specified, $global:AzureDevOpsApi_CollectionUri (set by Set-AzureDevopsVariables) is used. .PARAMETER ApiCredential ApiCredential object to use for authentication on given CollectionUri. If not specified, $global:AzureDevOpsApi_ApiCredential (set by Set-AzureDevopsVariables) is used. .PARAMETER ApiVersion Version of Azure DevOps API to use. If not specified, $global:AzureDevOpsApi_ApiVersion (set by Set-AzureDevopsVariables) is used. #> [OutputType('PSTypeNames.AzureDevOpsApi.ApiCollectionConnection')] [CmdletBinding()] param( $Uri, $CollectionUri, [AllowNull()] [PSTypeName('PSTypeNames.AzureDevOpsApi.ApiCredential')] [PSCustomObject] $ApiCredential, $ApiVersion ) process { # If $Uri is not specified, use empty string if (!$Uri) { $Uri = [string]::Empty } # If $Uri is specified, and an absolute one, use it as $CollectionUri if (([Uri]::new($Uri, [UriKind]::RelativeOrAbsolute)).IsAbsoluteUri) { $CollectionUri = Format-Uri -Uri $Uri } else { $CollectionUri = Format-Uri -Uri $CollectionUri } # Try to find the collection in the cache $apiCollection = Find-ApiCollection -Uri $CollectionUri if ($apiCollection) { $CollectionUri = $apiCollection.CollectionUri $ApiVersion = $apiCollection.ApiVersion } else { # Get CollectionUri to use $CollectionUri = Use-CollectionUri ` -CollectionUri $CollectionUri # Get ApiVersion to use $ApiVersion = Use-ApiVersion ` -CollectionUri $CollectionUri $apiCollection = New-ApiCollection ` -CollectionUri $CollectionUri ` -ApiVersion $ApiVersion } # Get ApiCredential to use $ApiCredential = Use-ApiCredential ` -CollectionUri $CollectionUri ` -ApiCredential $ApiCredential # Create new connection object return New-ApiCollectionConnection ` -CollectionUri $CollectionUri ` -ApiCredential $ApiCredential ` -ApiVersion $ApiVersion } } |