From 4fee79d0941232be739cf7c3ef0cba4f9fc6865c Mon Sep 17 00:00:00 2001 From: Jeffrey Patton Date: Thu, 20 Jul 2023 21:56:33 -0500 Subject: [PATCH] issue-38: Added GetAdoFeedView function --- AzDevOps/AzDevOps.psd1 | 2 +- AzDevOps/feed/feed.psd1 | 2 +- AzDevOps/feed/feeds/Public/GetFeed.ps1 | 2 +- AzDevOps/feed/feeds/Public/GetFeedView.ps1 | 92 ++++++++++++++++++++++ 4 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 AzDevOps/feed/feeds/Public/GetFeedView.ps1 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