#' User input processing #' #' @param x input #' #' @return processed input #' @export process_user_input <- function(x) { UseMethod("process_user_input", x) } #' User input processing default #' #' @param x input #' @param ... ignored #' #' @return processed input #' @export process_user_input.default <- function(x, ...) { stop( deparse(substitute(x)), " must be a 'data.frame',", " a 'response',", " or a 'character' vector containing JSON.", call. = FALSE ) } #' User input processing data.frame #' #' @param x input #' @param ... ignored #' #' @return processed input #' @export process_user_input.data.frame <- function(x, ...) { x } #' User input processing character #' #' @param x input #' @param ... ignored #' #' @return processed input #' @export process_user_input.character <- function(x, ...) { if (!requireNamespace("jsonlite", quietly = TRUE)) { stop( "The package 'jsonlite' is needed to convert ", deparse(substitute(x)), " into a data frame.", "\n Either install 'jsonlite' or pass ", deparse(substitute(x)), " as a 'data.frame'.", call. = FALSE ) } jsonlite::fromJSON(x) } #' User input processing response #' #' @param x input #' @param ... ignored #' #' @return processed input #' @export process_user_input.response <- function(x, ...) { process_user_input(rawToChar(x$content)) }