diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | plumber.R | 28 |
2 files changed, 28 insertions, 1 deletions
@@ -12,6 +12,7 @@ R version 3.4.4 install.packages("readr") install.packages("futile.logger") install.packages("tryCatchLog") + install.packages("ggplot2") ------------------------------------------ > library(plumber) > r <- plumb("plumber.R") # Where 'plumber.R' is the location of the file shown above @@ -5,7 +5,6 @@ library(readr) library(futile.logger) library(tryCatchLog) library(ggplot2) - # creare R directory dir.create(file.path("/tmp/R"), showWarnings = FALSE) @@ -23,6 +22,7 @@ function(code="", session_id="", R_file_id="") { # create session directory for user dir.create(file.path("/tmp/R/", session_id), showWarnings = FALSE) + setwd(file.path("/tmp/R/", session_id)) InputFile <- paste("/tmp/R/",session_id,"/", R_file_id,".R", sep="") OutputFile <- paste("/tmp/R/",session_id,"/", R_file_id,".txt", sep="") RunInputFile <- paste("Rscript", InputFile, sep=" ") @@ -68,3 +68,29 @@ robust.system <- function (cmd) { unlink(c(stdoutFile, stderrFile)) return(retval) } + + +#* @post /upload +upload <- function(req, res){ + cat("---- New Request ----\n") + session_id <- gsub('\"', "", substr(req$postBody[length(req$postBody)-1], 1, 1000)) + dir.create(file.path("/tmp/R/", session_id), showWarnings = FALSE) + # the path where you want to write the uploaded files + file_path <- paste("/tmp/R/",session_id,"/", sep="") + # strip the filename out of the postBody + file_name <- gsub('\"', "", substr(req$postBody[2], 55, 1000)) + # need the length of the postBody so we know how much to write out + file_length <- length(req$postBody)-5 + # first five lines of the post body contain metadata so are ignored + file_content <- req$postBody[5:file_length] + # build the path of the file to write + file_to_write <- paste0(file_path, file_name) + # write file out with no other checks at this time + write(file_content, file = file_to_write) + # print logging info to console + cat("File", file_to_write, "uploaded\n") + # return file path &name to user + ro <- file_to_write + r<- list(status = "SUCCESS", code = "200", output = ro) + return (r) +} |