DSCResources/EventStoreRunning/EventStoreRunning.psm1

function Test-EventStoreRunning {

    [OutputType('System.Boolean')]
    [cmdletbinding()]
    Param(
        [String]    $url = "http://localhost:2113" ,
        [Int]       $repeats = 3,
        [Int]       $secondsToWait = 1
    )

    Write-Information ":: Testing EventStore on URL: $url"

    $i = 1;
    while ($i -ne $repeats) {
        Write-Verbose -Message (":: Attemp: $i")
        try {
            Write-Verbose -Message (":: Try to Invoke Invoke-RestMethod: $url")
            $response = Invoke-RestMethod  $url -Method Get
            Write-Verbose -Message (":: Response: $response")

            return $true
        }
        catch {

            Write-Verbose -Message (":: $_")
            #return $false
            Write-Verbose -Message (":: Waiting $secondsToWait seconds")
            Start-Sleep -s $secondsToWait
        }

        $i = $i + 1;
    }

    return $false
}


function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [Parameter(Mandatory = $true)] [String] $Url,
        [Parameter()] [String] $Repeats,
        [Parameter()] [String] $SecondsToWait
    )

    Write-Verbose 'Start Get-TargetResource'
    Write-Verbose "Url: $Url"

     $returnValue = @{
        Url = $Url
    }

    $returnValue
}

function Set-TargetResource
{
    [CmdletBinding(SupportsShouldProcess = $true)]
    param
    (
        [Parameter(Mandatory = $true)] [String] $Url,
        [Parameter()] [String] $Repeats,
        [Parameter()] [String] $SecondsToWait
    )

    throw 'EventStore is not running'
}

function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [Parameter(Mandatory = $true)] [String] $Url,
        [Parameter()] [String] $Repeats,
        [Parameter()] [String] $SecondsToWait
    )

    $ret = (Test-EventStoreRunning -url $Url -repeats $Repeats -secondsToWait $SecondsToWait)

    Write-Host "EventStoreRunning $url $ret"

    if ($ret -eq "False") {
        return $true;
    }

    return $false;
}

Export-ModuleMember -Function *-TargetResource