diff options
author | Prashant S | 2019-07-16 14:43:28 +0530 |
---|---|---|
committer | GitHub | 2019-07-16 14:43:28 +0530 |
commit | d1335755b5c72d6c49d26248fa947dbaabbf9bb1 (patch) | |
tree | e05f4c495c8600a5a7d9759407502f27fb71b6cf /plumber.R | |
parent | cf25d4362119b7a2811f696553048d077ed2350f (diff) | |
parent | ace97e1bf64c0fe3d6226d27dc83aa0a49a81e94 (diff) | |
download | R_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.R | 28 |
1 files changed, 27 insertions, 1 deletions
@@ -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) +} |