Private/GitHub/Get-CgrGitHubApi.ps1
|
function Get-CgrGitHubApi { [CmdletBinding()] param( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string] $Path, [ValidateNotNullOrEmpty()] [string] $HostName = 'github.com', [switch] $Paginate ) $arguments = @('api', '--hostname', $HostName) if ($Paginate) { $arguments += @('--paginate', '--slurp') } $arguments += $Path $result = Invoke-CgrGitHubApiReadRequest -ArgumentList $arguments $response = & $script:ResolveCgrGitHubApiReadResponse -Result $result -Path $Path if ($response.Status -eq 'Error') { $PSCmdlet.ThrowTerminatingError($response.ErrorRecord) } if ($response.Status -eq 'Empty') { return @() } $data = $response.Data if (-not $Paginate) { return $data } $items = [System.Collections.Generic.List[object]]::new() foreach ($page in @($data)) { foreach ($item in @($page)) { $items.Add($item) } } return $items.ToArray() } |