Skip to content

Commit

Permalink
#14 fix auth & keyring support
Browse files Browse the repository at this point in the history
  • Loading branch information
eblondel committed Sep 8, 2021
1 parent 44e4705 commit d91028a
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 42 deletions.
8 changes: 4 additions & 4 deletions R/ocsApiSharingManager.R
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ ocsApiSharingManager <- R6Class("ocsApiSharingManager",
request <- "ocs/v1.php/apps/files_sharing/api/v1/shares"
get_req <- ocsRequest$new(
type = "HTTP_GET", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
namedParams = list(
path = path,
reshares = reshares,
Expand Down Expand Up @@ -175,8 +175,8 @@ ocsApiSharingManager <- R6Class("ocsApiSharingManager",
request <- "ocs/v1.php/apps/files_sharing/api/v1/shares"
post_req <- ocsRequest$new(
type = "HTTP_POST", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
namedParams = list(
name = name,
path = path,
Expand Down
56 changes: 28 additions & 28 deletions R/ocsApiUserProvisioningManager.R
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- "ocs/v1.php/cloud/users"
post_req <- ocs4R::ocsRequest$new(
type = "HTTP_POST", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = list(
userid = userid,
email = email,
Expand All @@ -130,8 +130,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
getUsers = function(){
get_users <- ocs4R::ocsRequest$new(
type = "HTTP_GET", private$url, "ocs/v1.php/cloud/users",
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
get_users$execute()
Expand All @@ -144,8 +144,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
getUser = function(userid, pretty = FALSE){
get_user <- ocs4R::ocsRequest$new(
type = "HTTP_GET", private$url, sprintf("ocs/v1.php/cloud/users/%s", userid),
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
get_user$execute()
Expand All @@ -171,8 +171,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/users/%s", userid)
put_req <- ocsRequest$new(
type = "HTTP_PUT", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = list(key = key, value = value),
logger = self$loggerType
)
Expand Down Expand Up @@ -210,8 +210,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/users/%s/enable", userid)
put_req <- ocsRequest$new(
type = "HTTP_PUT", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = "",
logger = self$loggerType
)
Expand All @@ -224,8 +224,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/users/%s/disable", userid)
put_req <- ocsRequest$new(
type = "HTTP_PUT", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = "",
logger = self$loggerType
)
Expand All @@ -238,8 +238,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/users/%s", userid)
delete_req <- ocsRequest$new(
type = "HTTP_DELETE", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
delete_req$execute()
Expand All @@ -250,8 +250,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
getUserGroups = function(userid){
get_usergroups <- ocs4R::ocsRequest$new(
type = "HTTP_GET", private$url, sprintf("ocs/v1.php/cloud/users/%s/groups", userid),
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
get_usergroups$execute()
Expand All @@ -265,8 +265,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/users/%s/groups", userid)
post_req <- ocs4R::ocsRequest$new(
type = "HTTP_POST", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = list(groupid = groupid),
contentType = NULL,
logger = self$loggerType
Expand All @@ -282,8 +282,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/users/%s/groups", userid)
delete_req <- ocsRequest$new(
type = "HTTP_DELETE", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = list(groupid = groupid),
logger = self$loggerType
)
Expand Down Expand Up @@ -313,8 +313,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
getGroups = function(search = NULL, limit = NULL, offset = NULL){
get_groups <- ocs4R::ocsRequest$new(
type = "HTTP_GET", private$url, "ocs/v1.php/cloud/groups",
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
namedParams = list(search = search, limit = limit, offset = offset),
logger = self$loggerType
)
Expand All @@ -329,8 +329,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- "ocs/v1.php/cloud/groups"
post_req <- ocs4R::ocsRequest$new(
type = "HTTP_POST", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
content = list(groupid = groupid),
contentType = NULL,
logger = self$loggerType
Expand All @@ -345,8 +345,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
getGroup = function(groupid){
get_group <- ocs4R::ocsRequest$new(
type = "HTTP_GET", private$url, sprintf("ocs/v1.php/cloud/groups/%s", groupid),
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
get_group$execute()
Expand All @@ -360,8 +360,8 @@ ocsApiUserProvisioningManager <- R6Class("ocsApiUserProvisioningManager",
request <- sprintf("ocs/v1.php/cloud/groups/%s", groupid)
delete_req <- ocsRequest$new(
type = "HTTP_DELETE", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
delete_req$execute()
Expand Down
16 changes: 8 additions & 8 deletions R/ocsApiWebdavManager.R
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ ocsApiWebdavManager <- R6Class("ocsApiWebdavManager",
request <- paste0(self$getWebdavRoot(), relPath)
list_req <- ocsRequest$new(
type = "WEBDAV_PROPFIND", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
list_req$execute()
Expand All @@ -89,8 +89,8 @@ ocsApiWebdavManager <- R6Class("ocsApiWebdavManager",
request <- paste0(self$getWebdavRoot(), relPath, name)
mkcol_req <- ocsRequest$new(
type = "WEBDAV_MKCOL", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
logger = self$loggerType
)
mkcol_req$execute()
Expand Down Expand Up @@ -120,8 +120,8 @@ ocsApiWebdavManager <- R6Class("ocsApiWebdavManager",
filename, paste(private$url, request, sep="/")))
upload_req <- ocsRequest$new(
type = "HTTP_PUT", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
filename = filename,
logger = self$loggerType
)
Expand All @@ -148,8 +148,8 @@ ocsApiWebdavManager <- R6Class("ocsApiWebdavManager",
filename, paste(private$url, request, sep="/")))
upload_req <- ocsRequest$new(
type = "HTTP_DELETE", private$url, request,
private$user, pwd = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token")), cookies = private$cookies,
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
token = private$getToken(), cookies = private$cookies,
filename = filename,
logger = self$loggerType
)
Expand Down
15 changes: 13 additions & 2 deletions R/ocsManager.R
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,16 @@ ocsManager <- R6Class("ocsManager",
keyring_backend = keyring::backend_env$new(),
keyring_service = NULL,

#getToken (if existing)
getToken = function(){
token <- NULL
if(!is.null(private$keyring_service)){
keyring_token <- suppressWarnings(try(private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user, "_token")), silent = TRUE))
if(!is(keyring_token, "try-error")) token <- keyring_token
}
return(token)
},

#checkAPIAvailability
checkAPIAvailability = function(name, element){
if(!private$capabilities[[element]]$api_enabled){
Expand Down Expand Up @@ -200,7 +210,8 @@ ocsManager <- R6Class("ocsManager",
connect = function(){
caps_req <- ocsRequest$new(
type = "HTTP_GET", private$url, "ocs/v1.php/cloud/capabilities",
private$user, logger = self$loggerType
private$user, pwd = private$keyring_backend$get(service = private$keyring_service, username = paste0(private$user,"_pwd")),
logger = self$loggerType
)
caps_req$execute()
caps_resp <- caps_req$getResponse()
Expand All @@ -215,7 +226,7 @@ ocsManager <- R6Class("ocsManager",
cookies <- unlist(cookies[names(cookies)!="XSRF-TOKEN"])
private$cookies <- paste0(sapply(names(cookies), function(cookiename){paste0(cookiename,"=",cookies[[cookiename]])}),collapse=";")

keyring_token <- private$keyring_backend$get(private$keyring_service, username = paste0(private$user,"_token"))
keyring_token <- private$getToken()
if(!is.null(keyring_token)){
caps_req <- ocsRequest$new(
type = "HTTP_GET", private$url, "ocs/v1.php/cloud/capabilities",
Expand Down

0 comments on commit d91028a

Please sign in to comment.