summaryrefslogtreecommitdiff
path: root/plumber.R
diff options
context:
space:
mode:
authorPrashant S2019-07-16 14:43:28 +0530
committerGitHub2019-07-16 14:43:28 +0530
commitd1335755b5c72d6c49d26248fa947dbaabbf9bb1 (patch)
treee05f4c495c8600a5a7d9759407502f27fb71b6cf /plumber.R
parentcf25d4362119b7a2811f696553048d077ed2350f (diff)
parentace97e1bf64c0fe3d6226d27dc83aa0a49a81e94 (diff)
downloadR_on_Cloud_Web_API-d1335755b5c72d6c49d26248fa947dbaabbf9bb1.tar.gz
R_on_Cloud_Web_API-d1335755b5c72d6c49d26248fa947dbaabbf9bb1.tar.bz2
R_on_Cloud_Web_API-d1335755b5c72d6c49d26248fa947dbaabbf9bb1.zip
Merge pull request #2 from prashantsinalkar/master
added csv file upload feature
Diffstat (limited to 'plumber.R')
-rw-r--r--plumber.R28
1 files changed, 27 insertions, 1 deletions
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)
+}