urlshrtPS.psm1


function Add-ShortUrl {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory,Position=0)]
        [ValidateScript({[Uri]::CheckHostName($_) -eq 'Dns'})]
        $Zone,
        [Parameter(Mandatory,Position=1)]
        $Name,
        [Parameter(Mandatory,Position=2)]
        [ValidateScript({[Uri]::IsWellFormedUriString($_,[UriKind]::Absolute)})]
        $Url,
        [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
        [ValidateRange(10000,99999)]
        [int]$Account,
        [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
        [System.Security.SecureString]$AccessToken
        )

    $record = Get-ZoneRecord -Zone $Zone -Name $Name -Account $Account -AccessToken $AccessToken
    if ($record) {
        Write-Error "Record with name $Name and type URL already exists in zone $Zone"
        return
    }
    Add-ZoneRecord -Zone $Zone -RecordType URL -Name $Name -Content $Url -Account $Account -AccessToken $AccessToken
}

function Remove-ShortUrl {
    [CmdletBinding()]
        param (
            [Parameter(Mandatory,Position=0)]
            [ValidateScript({[Uri]::CheckHostName($_) -eq 'Dns'})]
            $Zone,
            [Parameter(Mandatory,Position=1)]
            $Name,
            [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
            [ValidateRange(10000,99999)]
            [int]$Account,
            [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
            [System.Security.SecureString]$AccessToken
            )
    
        $record = Get-ZoneRecord -Zone $Zone -Name $Name -Account $Account -AccessToken $AccessToken
        if (-not($record)) {
            Write-Output "Record with name $Name and type URL does not exist in zone $Zone"
            return
        }
        Remove-ZoneRecord -Zone $Zone -Id $record.id -Account $Account -AccessToken $AccessToken
}