Public/Get-Gist.ps1

Function Get-Gist {
    [CmdletBinding(
        DefaultParameterSetName = "__AllParameterSets",
        HelpUri = "http://dotps1.github.io/PSGist/Get-Gist.html"
    )]
    [OutputType(
        [Gist]
    )]

    Param (
        [Parameter(
            HelpMessage = "The username of the GitHub User.",
            ParameterSetName = "Owner",
            ValueFromPipelineByPropertyName = $true
        )]
        [String]
        $Owner,
        
        [Parameter(
            HelpMessage = "The Id of the Gist Object.",
            ParameterSetName = "Id",
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName = $true
        )]
        [String[]]
        $Id,

        [Parameter(
            HelpMessage = "Get Gists that have been starred.",
            ParameterSetName = "Starred"
        )]
        [Switch]
        $Starred
    )

    Process {
        switch ($PSCmdlet.ParameterSetName) {
            "Owner" {
                foreach ($item in $Owner) {
                    foreach ($result in (Invoke-GistApi -RestMethod "users/$item/gists" -Method "GET")) {
                        [Gist]::new(
                            $result
                        )
                    }
                }
            }
        
            "Id" { 
                foreach ($item in $Id) {
                    foreach ($result in (Invoke-GistApi -RestMethod "gists/$item" -Method "GET")) {
                        [Gist]::new(
                            $result
                        )
                    }
                }
            }

            "Starred" {
                foreach ($result in (Invoke-GistApi -RestMethod "gists/starred" -Method "GET")) {
                    [Gist]::new(
                        $result
                    )
                }
            }

            default {
                foreach ($result in (Invoke-GistApi -RestMethod "gists" -Method "GET")) {
                    [Gist]::new(
                        $result
                    )
                }
            }
        }
    }
}