Public/SSL/Get-StatusCakeHelperSSLTest.ps1


<#
.Synopsis
   Gets a StatusCake SSL Test
.EXAMPLE
   Get-StatusCakeHelperSSLTest -Username "Username" -ApiKey "APIKEY" -id 123456
.INPUTS
    baseSSLTestURL - Base URL endpoint of the statuscake auth API
    Username - Username associated with the API key
    ApiKey - APIKey to access the StatusCake API
    Domain - Name of the test to retrieve
    ID - Test ID to retrieve
.OUTPUTS
    Returns a StatusCake SSL Tests as an object
.FUNCTIONALITY
    Retrieves a specific StatusCake SSL Test
   
#>

function Get-StatusCakeHelperSSLTest
{
    [CmdletBinding(PositionalBinding=$false)]    
    Param(
        $baseSSLTestURL = "https://app.statuscake.com/API/SSL/",

        [ValidateNotNullOrEmpty()]
        $Username = (Get-StatusCakeHelperAPIAuth).Username,
        [ValidateNotNullOrEmpty()]        
        $ApiKey = (Get-StatusCakeHelperAPIAuth).GetNetworkCredential().password,

        [Parameter(ParameterSetName = "Domain")]
        [ValidatePattern('^((https):\/\/)([a-zA-Z0-9\-]+(\.[a-zA-Z]+)+.*)$|^(?!^.*,$)')]
        [string]$domain,

        [Parameter(ParameterSetName = "ID")]
        [ValidateNotNullOrEmpty()]            
        [int]$id      
    )
    $authenticationHeader = @{"Username"="$Username";"API"="$ApiKey"}

    $requestParams = @{
        uri = $baseSSLTestURL
        Headers = $authenticationHeader
        UseBasicParsing = $true
    }

    $jsonResponse = Invoke-WebRequest @requestParams
    $response = $jsonResponse | ConvertFrom-Json

    if($domain)
    {
        $matchingTests = $response | Where-Object {$_.domain -eq $domain}
    }
    elseif($id)
    {
        $matchingTests = $response | Where-Object {$_.id -eq $id}
    }

    if($matchingTests)
    {
        Return $matchingTests
    }

    Return $null
}