Public/New-GitIoShortUrl.ps1

<#
    .Synopsis
        Create a git.io shorturl from a long GitHub Url.
    .DESCRIPTION
        This command creates a new git.io shorturl from a long GitHub.com url
    .EXAMPLE
        New-GitIoShortUrl -Url 'https://GitHub.com/rchaganti'
 
        This creates a git.io short url with a random shortcode
    .EXAMPLE
        New-GitIoShortUrl -Url 'https://GitHub.com/rchaganti' -Code psdev
 
        This creates a git.io short url with the shortcode set to psdev if it is available
 
#>

function New-GitIoShortURL
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        [String]
        $Url,

        [Parameter()]
        [string]
        $Code
    )

    $gitIoFormInput = @{
        url = $Url
    }

    if ($Code)
    {
        if ((Get-GitIoShortUrl -ShortUrl "https://git.io/${Code}" -ErrorAction SilentlyContinue))
        {
            throw "${Code} is already taken! Try another code."
        }
        else
        {
            $gitIoFormInput.Add('code', $Code)
        }
    }

    try
    {
        $response = Invoke-WebRequest -Uri 'https://git.io/' `
                        -Method Post `
                        -Body $gitIoFormInput `
                        -ContentType "application/x-www-form-urlencoded" `
                        -ErrorAction Stop
        if ($response.StatusCode -eq 201 -or $response.StatusCode -eq 200)
        {
            return $response.Headers.Location
        }
    }
    catch
    {
        Write-Error $_
    }
}