Util/KeepAlive.psm1

using module '../Common/Result'
Import-Module -Name @(Join-Path $PSScriptRoot .. | Join-Path -ChildPath Util | Join-Path -ChildPath Util)

function Start-RMKeepAlive {
    param (
        [bool]$Forever = $true
    )
    try {
        $SleepInterval = 10
        $LoginStatus = Test-UserLoggedIn
        if ($LoginStatus.ReturnCode -eq [RMReturn]::ERROR) {
            return $LoginStatus
        }

        [RMReturn] $RMReturn = [RMReturn]::new()
        $Uri = Get-Variable -Name "RMContext-ReactorURI" -ValueOnly
        $RMLoginResult = Get-Variable -Name "RMContext-UserLogin" -ValueOnly

        $Headers = @{
            Cookie = $RMLoginResult
        }

        $Params = @{
            Method = "Post"
            Uri = $Uri + "/users/keep-alive"
            Headers = $Headers
        }

        do {
            Invoke-RMRestMethod -Params $Params
            Write-Output "Session is alive" | Out-Host
            Start-Sleep -Duration (New-TimeSpan -Minutes $SleepInterval)
        } while ($Forever)


        $RMReturn.SetReturnCode([RMReturn]::SUCCESS)
        return $RMReturn
    } catch {
        Show-RMError -ErrorObj $PSItem
        return Build-RMError -ErrorObj $PSItem
    }

}