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
}