@ -0,0 +1,53 @@ | |||
#' Retrieve the Docker image for Splash | |||
#' | |||
#' @md | |||
#' @param host Docker host; defauolts to `localhost` | |||
#' @return `harbor` `host` object | |||
#' @export | |||
#' @examples \dontrun{ | |||
#' install_splash() | |||
#' splash_container <- start_splash() | |||
#' stop_splash(splash_container) | |||
#' } | |||
install_splash <- function(host = harbor::localhost) { | |||
harbor::docker_pull(host, "scrapinghub/splash") | |||
} | |||
#' Start a Splash server Docker container | |||
#' | |||
#' @param host Docker host; defauolts to `localhost` | |||
#' @note you need Docker running on your system and have pulled the container with | |||
#' [install_spash] for this to work. You should save the resultant `host` | |||
#' object for use in [stop_splash]. | |||
#' @return `harbor` `container` object | |||
#' @export | |||
#' @examples \dontrun{ | |||
#' install_splash() | |||
#' splash_container <- start_splash() | |||
#' stop_splash(splash_container) | |||
#' } | |||
start_splash <- function(host = harbor::localhost) { | |||
harbor::docker_run(host, | |||
image = "scrapinghub/splash", | |||
detach = TRUE, | |||
docker_opts = c("-p", "5023:5023", | |||
"-p", "8050:8050", | |||
"-p", "8051:8051")) | |||
} | |||
#' Stop a running a Splash server Docker container | |||
#' | |||
#' @param splash_container saved Splash container id from [start_splash] | |||
#' @param splash_container Docker `container` object created by [start_splash] | |||
#' @note you need Docker running on your system and have pulled the container with | |||
#' [install_spash] and started the Splash container with [start_splash] for this | |||
#' to work. You will need the `container` object from [start_splash] for this to work. | |||
#' @export | |||
#' @examples \dontrun{ | |||
#' install_splash() | |||
#' splash_container <- start_splash() | |||
#' stop_splash(splash_container) | |||
#' } | |||
stop_splash <- function(splash_container) { | |||
harbor::container_rm(splash_container, force=TRUE) | |||
} |
@ -0,0 +1,92 @@ | |||
#' Retrieve or test content type of a HAR request object | |||
#' | |||
#' @param har_resp_obj HAR response object | |||
#' @export | |||
get_content_type <- function(har_resp_obj) { | |||
ctype <- har_resp_obj$response$content$mimeType | |||
if (ctype == "") return(NA_character_) | |||
if (any(grepl(";", ctype))) ctype <- gsub(";.*$", "", ctype) | |||
ctype | |||
} | |||
#' @md | |||
#' @rdname get_content_type | |||
#' @param type content type to compare to (default: "`application/json`") | |||
#' @export | |||
is_content_type <- function(har_resp_obj, type="application/json") { | |||
get_content_type(har_resp_obj) == type | |||
} | |||
#' @rdname get_content_type | |||
#' @export | |||
is_json <- function(har_resp_obj) { is_content_type(har_resp_obj) } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_xml <- function(har_resp_obj) { is_content_type(har_resp_obj, type="application/xml") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_css <- function(har_resp_obj) { is_content_type(har_resp_obj, type="text/css") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_plain <- function(har_resp_obj) { is_content_type(har_resp_obj, type="text/plain") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_binary <- function(har_resp_obj) { is_content_type(har_resp_obj, type="application/octet-stream") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_javascript <- function(har_resp_obj) { | |||
is_content_type(har_resp_obj, type="text/javascript") | | |||
is_content_type(har_resp_obj, type="text/x-javascript") | |||
} | |||
#' @rdname get_content_type | |||
#' @export | |||
is_html <- function(har_resp_obj) { is_content_type(har_resp_obj, type="text/html") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_jpeg <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/jpeg") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_png <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/png") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_svg <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/svg+xml") } | |||
#' @rdname get_content_type | |||
#' @export | |||
is_gif <- function(har_resp_obj) { is_content_type(har_resp_obj, type="image/gif") } | |||
#' Retrieve size of content | body | headers | |||
#' | |||
#' @param har_resp_obj HAR response object | |||
#' @export | |||
get_content_size <- function(har_resp_obj) { | |||
csize <- har_resp_obj$response$content$size | |||
if (is.null(csize)) return(NA_real_) | |||
return(as.numeric(csize)) | |||
} | |||
#' @rdname get_content_size | |||
#' @export | |||
get_body_size <- function(har_resp_obj) { | |||
bsize <- har_resp_obj$response$bodySize | |||
if (is.null(bsize)) return(NA_real_) | |||
return(as.numeric(bsize)) | |||
} | |||
#' @rdname get_content_size | |||
#' @export | |||
get_headers_size <- function(har_resp_obj) { | |||
hsize <- har_resp_obj$response$headersSize | |||
if (is.null(hsize)) return(NA_real_) | |||
return(as.numeric(hsize)) | |||
} | |||
@ -0,0 +1,20 @@ | |||
% Generated by roxygen2: do not edit by hand | |||
% Please edit documentation in R/helpers.r | |||
\name{get_content_size} | |||
\alias{get_content_size} | |||
\alias{get_body_size} | |||
\alias{get_headers_size} | |||
\title{Retrieve size of content | body | headers} | |||
\usage{ | |||
get_content_size(har_resp_obj) | |||
get_body_size(har_resp_obj) | |||
get_headers_size(har_resp_obj) | |||
} | |||
\arguments{ | |||
\item{har_resp_obj}{HAR response object} | |||
} | |||
\description{ | |||
Retrieve size of content | body | headers | |||
} |
@ -0,0 +1,52 @@ | |||
% Generated by roxygen2: do not edit by hand | |||
% Please edit documentation in R/helpers.r | |||
\name{get_content_type} | |||
\alias{get_content_type} | |||
\alias{is_content_type} | |||
\alias{is_json} | |||
\alias{is_xml} | |||
\alias{is_css} | |||
\alias{is_plain} | |||
\alias{is_binary} | |||
\alias{is_javascript} | |||
\alias{is_html} | |||
\alias{is_jpeg} | |||
\alias{is_png} | |||
\alias{is_svg} | |||
\alias{is_gif} | |||
\title{Retrieve or test content type of a HAR request object} | |||
\usage{ | |||
get_content_type(har_resp_obj) | |||
is_content_type(har_resp_obj, type = "application/json") | |||
is_json(har_resp_obj) | |||
is_xml(har_resp_obj) | |||
is_css(har_resp_obj) | |||
is_plain(har_resp_obj) | |||
is_binary(har_resp_obj) | |||
is_javascript(har_resp_obj) | |||
is_html(har_resp_obj) | |||
is_jpeg(har_resp_obj) | |||
is_png(har_resp_obj) | |||
is_svg(har_resp_obj) | |||
is_gif(har_resp_obj) | |||
} | |||
\arguments{ | |||
\item{har_resp_obj}{HAR response object} | |||
\item{type}{content type to compare to (default: "\code{application/json}")} | |||
} | |||
\description{ | |||
Retrieve or test content type of a HAR request object | |||
} |