diff --git a/AzDevOps/AzDevOps.psd1 b/AzDevOps/AzDevOps.psd1 index 55c6f28..7d1a8c5 100644 --- a/AzDevOps/AzDevOps.psd1 +++ b/AzDevOps/AzDevOps.psd1 @@ -70,7 +70,7 @@ # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. # FunctionsToExport = @('Connect-Organization','Invoke-RestMethod','Get-Build','Get-BuildLog','Remove-Build','Start-Build','Get-BuildDefinition','Get-BuildFolder','New-BuildFolder','Remove-BuildFolder','Get-Process','Get-Project','Get-ProjectProperty','New-Project','Remove-Project','Update-Project','Get-Team','Get-TeamMember','New-Team','Remove-Team','Update-Team','Get-Operation') - FunctionsToExport = @('Connect-Organization','Invoke-Endpoint','Get-Build','Get-BuildLog','Remove-Build','Start-Build','Get-BuildDefinition','Get-BuildFolder','New-BuildFolder','Remove-BuildFolder','Get-Process','Get-Project','Get-ProjectProperty','New-Project','Remove-Project','Update-Project','Get-Team','Get-TeamMember','New-Team','Remove-Team','Update-Team','Get-Feed','Get-Repository','New-Repository','Remove-Repository','Get-Operation') + FunctionsToExport = @('Connect-Organization','Invoke-Endpoint','Get-Build','Get-BuildLog','Remove-Build','Start-Build','Get-BuildDefinition','Get-BuildFolder','New-BuildFolder','Remove-BuildFolder','Get-Process','Get-Project','Get-ProjectProperty','New-Project','Remove-Project','Update-Project','Get-Team','Get-TeamMember','New-Team','Remove-Team','Update-Team','Get-Feed','Get-FeedView','Get-Repository','New-Repository','Remove-Repository','Get-Operation') # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = @() diff --git a/AzDevOps/feed/feed.psd1 b/AzDevOps/feed/feed.psd1 index 86bccdc..8c31d95 100644 --- a/AzDevOps/feed/feed.psd1 +++ b/AzDevOps/feed/feed.psd1 @@ -69,7 +69,7 @@ Description = 'A collection of functions to work with Azure Devops Feeds' # NestedModules = @() # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = @('Get-Feed') +FunctionsToExport = @('Get-Feed','Get-FeedView') # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = '*' diff --git a/AzDevOps/feed/feeds/Public/GetFeed.ps1 b/AzDevOps/feed/feeds/Public/GetFeed.ps1 index 4e21426..d64f4a8 100644 --- a/AzDevOps/feed/feeds/Public/GetFeed.ps1 +++ b/AzDevOps/feed/feeds/Public/GetFeed.ps1 @@ -35,7 +35,7 @@ function Get-Feed $Uri = $Global:azDevOpsFeed + "$($thisProject.id)/_apis/packaging/feeds?api-version=$($ApiVersion)"; if ($Name) { - $Feed = Get-AdoFeed -Project $thisProject.Name |Where-Object -Property Name -eq $Name -Verbose:$VerbosePreference; + $Feed = Get-AdoFeed -Project $thisProject.Name | Where-Object -Property Name -eq $Name -Verbose:$VerbosePreference; Write-Verbose " FeedId : $($Feed.id)"; $Uri = $Global:azDevOpsFeed + "$($thisProject.id)/_apis/packaging/feeds/$($Feed.id)?api-version=$($ApiVersion)"; return (Invoke-AdoEndpoint -Uri ([System.Uri]::new($Uri)) -Method Get -Headers $Global:azDevOpsHeader -Verbose:$VerbosePreference); diff --git a/AzDevOps/feed/feeds/Public/GetFeedView.ps1 b/AzDevOps/feed/feeds/Public/GetFeedView.ps1 new file mode 100644 index 0000000..e75bead --- /dev/null +++ b/AzDevOps/feed/feeds/Public/GetFeedView.ps1 @@ -0,0 +1,92 @@ +function Get-FeedView +{ + [CmdletBinding( + HelpURI = 'https://github.com/Azure-Devops-PowerShell-Module/projects/blob/master/docs/Get-AdoFeedView.md#get-adofeedview', + PositionalBinding = $true)] + [OutputType([Object])] + param ( + [Parameter(Mandatory = $false)] + [string]$Project, + [Parameter(Mandatory = $true)] + [string]$Feed, + [Parameter(Mandatory = $false)] + [string]$Name, + [Parameter(Mandatory = $false)] + [ValidateSet('7.1-preview.1')] + [string]$ApiVersion = '7.1-preview.1' + ) + begin + { + Write-Verbose "GetFeedView : Begin Processing"; + Write-Verbose " Project : $($Project)"; + Write-Verbose " Feed : $($Feed)"; + Write-Verbose " Name : $($Name)"; + Write-Verbose " ApiVersion : $($ApiVersion)"; + try + { + $ErrorActionPreference = 'Stop'; + $Error.Clear(); + # + # Are we connected + # + if ($Global:azDevOpsConnected) + { + if (!([string]::IsNullOrEmpty($Feed)) -and ([string]::IsNullOrEmpty($Project)) -and ([string]::IsNullOrEmpty($Name))) + { + $thisFeed = Get-AdoFeed -Name $Feed -Verbose:$VerbosePreference; + $Uri = $Global:azDevOpsFeed + "_apis/packaging/feeds/$($thisFeed.id)/views?api-version=$($ApiVersion)"; + Write-Verbose "GetFeedView : All Org Views"; + Write-Verbose " Feed : $($thisFeed.id)"; + } + if (!([string]::IsNullOrEmpty($Feed)) -and ([string]::IsNullOrEmpty($Project)) -and !(([string]::IsNullOrEmpty($Name)))) + { + $thisFeed = Get-AdoFeed -Name $Feed -Verbose:$VerbosePreference; + $Uri = $Global:azDevOpsFeed + "_apis/packaging/feeds/$($thisFeed.id)/views?api-version=$($ApiVersion)"; + $thisView = (Invoke-AdoEndpoint -Uri ([System.Uri]::new($Uri)) -Method Get -Headers $Global:azDevOpsHeader -Verbose:$VerbosePreference).Value |Where-Object -Property Name -eq $Name; + $Uri = $Global:azDevOpsFeed + "_apis/packaging/feeds/$($thisFeed.id)/views/$($thisView.id)?api-version=$($ApiVersion)"; + Write-Verbose "GetFeedView : Specific Org View"; + Write-Verbose " Feed : $($thisFeed.id)"; + Write-Verbose " View : $($thisView.id)"; + } + if (!([string]::IsNullOrEmpty($Feed)) -and !(([string]::IsNullOrEmpty($Project))) -and ([string]::IsNullOrEmpty($Name))) + { + $thisProject = Get-AdoProject -Verbose:$VerbosePreference | Where-Object -Property Name -eq $Project; + $thisFeed = Get-AdoFeed -Project $Project -Name $Feed -verbose:$VerbosePreference; + $Uri = $Global:azDevOpsFeed + "$($thisProject.id)/_apis/packaging/feeds/$($thisFeed.id)/views?api-version=$($ApiVersion)"; + Write-Verbose "GetFeedView : All Project Views"; + Write-Verbose " Project : $($thisProject.id)"; + Write-Verbose " Feed : $($thisFeed.id)"; + } + if (!([string]::IsNullOrEmpty($Feed)) -and !(([string]::IsNullOrEmpty($Project))) -and !(([string]::IsNullOrEmpty($Name)))) + { + $thisProject = Get-AdoProject -Verbose:$VerbosePreference | Where-Object -Property Name -eq $Project; + $thisFeed = Get-AdoFeed -Project $Project -Name $Feed -verbose:$VerbosePreference; + $Uri = $Global:azDevOpsFeed + "$($thisProject.id)/_apis/packaging/feeds/$($thisFeed.id)/views?api-version=$($ApiVersion)"; + $thisView = (Invoke-AdoEndpoint -Uri ([System.Uri]::new($Uri)) -Method Get -Headers $Global:azDevOpsHeader -Verbose:$VerbosePreference).Value |Where-Object -Property Name -eq $Name; + $Uri = $Global:azDevOpsFeed + "$($thisProject.id)/_apis/packaging/feeds/$($thisFeed.id)/views/$($Name)?api-version=$($ApiVersion)"; + Write-Verbose "GetFeedView : Specific Project View"; + Write-Verbose " Project : $($thisProject.id)"; + Write-Verbose " Feed : $($thisFeed.id)"; + Write-Verbose " View : $($thisView.id)"; + } + if ($Uri) + { + Write-Verbose " Uri : $($Uri)"; + $Result = (Invoke-AdoEndpoint -Uri ([System.Uri]::new($Uri)) -Method Get -Headers $Global:azDevOpsHeader -Verbose:$VerbosePreference); + if ($Result.Value) + { + return $Result.Value; + } + else + { + return $Result; + } + } + } + } + catch + { + throw $_; + } + } +} \ No newline at end of file