R/rSSSession.R

Defines functions rSSSession rSSSessionClose rSSSessionOpen

rSSSessionOpen <- function(rSS) {
    rSSS_ready <- FALSE    
    rSS_ready <- rSS$getStatus()$ready
    if (!rSS_ready) {
        rSS$open()
    }
    browser_session <- rSS$remDr$getSessions()
    browser_count <- length(browser_session)
    if (browser_count == 0) {
        rSS$remDr$open(silent=TRUE)
        browser_session <- rSS$remDr$getSessions()
        rSSS_ready <- TRUE        
        message("RSelenium browser session has been created.")
    } else {
        rSSS_ready <- TRUE
    }
    rSSS <- list(ready=rSSS_ready,
                 remDr=rSS$remDr,
                 dir=rSS$dir,
                 close=rSS$container$close,
                 session=browser_session)
    options(layoutEngine.rSSSession=rSSS)
    rSSS
}

rSSSessionClose <- function(rSS) {
    if (!rSS$getStatus()$ready) {
        message("RSelenium browser session is not active so cannot be closed.")
    } else {
        rSS$container$close() 
    }
}

rSSSession <- function(url="localhost", portRS=4444L, portClient="4444",
                       network="bridge", shm_size="1g",
                       browser_type="firefox", headless=FALSE,
                       image_request=NULL, fresh_pull=FALSE) {

    settings <- list(url=url, portRS=portRS, portClient=portClient,
                     network=network, shm_size=shm_size,
                     browser_type=browser_type, headless=headless,
                     image_request=image_request, fresh_pull=fresh_pull)

    ## RSelenium server setup
    rSS <- rSServer(settings)

    ## RSelenium browser session setup 
    rSSS <- rSSSessionOpen(rSS)
    
    open <- function() {
        rSSSessionOpen(rSS)
    }

    close <- function() {
        rSSSessionClose(rSSS)
    }
    c(rSSS, open=open, close=close)
}
kcullimore/layoutenginerselenium documentation built on Oct. 25, 2020, 6:59 p.m.