public/Get-GitHubGist.ps1
<#
.Synopsis The function list GitHub Gists .DESCRIPTION All documentation find you on https://developer.github.com/v3/gists/#list-a-users-gists .EXAMPLE Get-GithubGist -UserName 'mnadobnik' -Token 'bc972823d9c79084ebfaefdc7ee98cbc1d259d1c' List a user's gists. .EXAMPLE Get-GithubGist -UserName 'mnadobnik' -Token 'bc972823d9c79084ebfaefdc7ee98cbc1d259d1c' -Id 'bbc1363c779397143f9c5169dd22562a' Get a single gist .EXAMPLE Get-GithubGist -UserName 'mnadobnik' -Token 'bc972823d9c79084ebfaefdc7ee98cbc1d259d1c' -Starred List the authenticated user's starred gists .EXAMPLE Get-GithubGist -UserName 'mnadobnik' -Token 'bc972823d9c79084ebfaefdc7ee98cbc1d259d1c' -Public List all public gists sorted by most recently updated to least recently updated. .EXAMPLE Get-GithubGist -UserName 'mnadobnik' -Token 'bc972823d9c79084ebfaefdc7ee98cbc1d259d1c' -PerPage 100 Note: With pagination, you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page. .NOTES Author: Mateusz Nadobnik Link: akademiapowershell.pl Date: 02-12-2019 Version: version eywords: keywords Notes: Changelog: #> function Get-GithubGist { [Alias('Get-Gist')] [cmdletbinding(DefaultParameterSetName = 'Id')] param( [Parameter(Mandatory)] [string]$UserName, [Parameter(Mandatory)] [string]$Token, [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName, ParameterSetName = "Id")] [Alias('GistId')] [string]$Id, [Parameter(ParameterSetName = "Starred")] [switch]$Starred, [Parameter(ParameterSetName = "Public")] [switch]$Public, [Parameter(Mandatory = $false)] [ValidateRange(1, 100)] [int]$PerPage = 30, [Parameter(Mandatory = $false, ValueFromPipeline)] [int]$Page = 1 ) begin { # Create BaseAuth $Token = ('{0}:{1}' -f $UserName, $Token) $BaseAuth = [System.Convert]::ToBase64String([char[]]$Token) $Header = @{ Authorization = "Basic $BaseAuth" } } process { if ($Starred.IsPresent) { $Uri = "https://api.github.com/gists/starred?page=$page&per_page=$PerPage" } elseif ($Public.IsPresent) { $Uri = "https://api.github.com/gists/public?page=$page&per_page=$PerPage" } elseif ($Id) { $Uri = "https://api.github.com/gists/$Id" } else { $Uri = "https://api.github.com/gists?page=$page&per_page=$PerPage" } try { Write-Verbose ($Header.Authorization) $Result = Invoke-RestMethod -Uri $Uri -Method Get -Headers $Header # Add property to returned objecd $Result | Add-Member -Name embed -MemberType NoteProperty -Value ('<script src="{0}.js"></script>' -f $Result.html_url) Write-Output $Result } catch { Write-Warning $_ } } } |