From 5ac13f7bcfec456f0d857d17cb42256ca34c4f5d Mon Sep 17 00:00:00 2001 From: eblondel Date: Thu, 25 Nov 2021 00:08:14 +0100 Subject: [PATCH] fix #64 --- NEWS.md | 1 + R/ZenodoManager.R | 19 +++++++++++++++---- R/ZenodoRequest.R | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index 09ae240..cb3918c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,7 @@ * [#62](https://github.com/eblondel/zen4R/issues/62) Fix new file upload API - wrong filename spliting * [#63](https://github.com/eblondel/zen4R/issues/63) Fix new file upload API - case with filename with spaces +* [#64](https://github.com/eblondel/zen4R/issues/64) Fix new file upload API - actual file upload ## **_0.5-1_** diff --git a/R/ZenodoManager.R b/R/ZenodoManager.R index 75f0cc4..9b48057 100644 --- a/R/ZenodoManager.R +++ b/R/ZenodoManager.R @@ -913,10 +913,21 @@ ZenodoManager <- R6Class("ZenodoManager", method <- if(newapi) "PUT" else "POST" if(newapi) self$INFO(sprintf("Using new file upload API with bucket: %s", record$links$bucket)) method_url <- if(newapi) sprintf("%s/%s", unlist(strsplit(record$links$bucket, "api/"))[2], URLencode(filename)) else sprintf("deposit/depositions/%s/files", recordId) - zenReq <- ZenodoRequest$new(private$url, method, method_url, - data = filename, file = upload_file(path), - token = self$getToken(), - logger = self$loggerType) + zenReq <- if(newapi){ + ZenodoRequest$new( + private$url, method, method_url, + data = upload_file(path), + token = self$getToken(), + logger = self$loggerType + ) + }else{ + ZenodoRequest$new( + private$url, method, method_url, + data = filename, file = upload_file(path), + token = self$getToken(), + logger = self$loggerType + ) + } zenReq$execute() out <- NULL if(zenReq$getStatus() == 201){ diff --git a/R/ZenodoRequest.R b/R/ZenodoRequest.R index 0581f82..e6d7192 100644 --- a/R/ZenodoRequest.R +++ b/R/ZenodoRequest.R @@ -144,7 +144,7 @@ ZenodoRequest <- R6Class("ZenodoRequest", PUT = function(url, request, data){ req <- paste(url, request, sep="/") - data <- private$prepareData(data) + if(regexpr("api/files", req)<0) data <- private$prepareData(data) #headers headers <- c("Content-Type" = if(regexpr("api/files", req)>0) "application/octet-stream" else "application/json",