summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--plumber.R28
2 files changed, 28 insertions, 1 deletions
diff --git a/README.md b/README.md
index d431377..2954027 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/plumber.R b/plumber.R
index 0f091c8..23031d8 100644
--- a/plumber.R
+++ b/plumber.R
@@ -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)
+}