Version: | 0.3 |
Date: | 2025-09-01 |
Title: | Interface to Open Collaboration Services (OCS) REST API |
Maintainer: | Emmanuel Blondel <emmanuel.blondel1@gmail.com> |
Depends: | R (≥ 3.3.0), methods |
Imports: | R6, openssl, curl,httr, jsonlite, XML, keyring |
Suggests: | testthat |
Description: | Provides an Interface to Open Collaboration Services 'OCS' (https://www.open-collaboration-services.org/) REST API. |
License: | MIT + file LICENSE |
URL: | https://github.com/eblondel/ocs4R |
BugReports: | https://github.com/eblondel/ocs4R/issues |
LazyLoad: | yes |
RoxygenNote: | 7.3.1 |
NeedsCompilation: | no |
Packaged: | 2025-09-01 08:48:06 UTC; emman |
Author: | Emmanuel Blondel |
Repository: | CRAN |
Date/Publication: | 2025-09-01 09:10:02 UTC |
Interface to 'OCS' REST API
Description
Provides an Interface to 'OCS' (<https://www.open-collaboration-services.org/>) REST API.
Author(s)
Emmanuel Blondel emmanuel.blondel1@gmail.com
See Also
Useful links:
ocs4RLogger
Description
ocs4RLogger
ocs4RLogger
Format
R6Class
object.
Value
Object of R6Class
for modelling a simple logger
Public fields
verbose.info
is info logger active?
verbose.debug
is debug logger active?
loggerType
logger type
Methods
Public methods
Method new()
Initializes the logger
Usage
ocs4RLogger$new(logger = NULL)
Arguments
logger
the type of logger. Default is
NULL
, acceptsINFO
orDEBUG
Method logger()
Logger function
Usage
ocs4RLogger$logger(type, text)
Arguments
type
type of log
text
text
Method INFO()
Logger to report information. Used internally
Usage
ocs4RLogger$INFO(text)
Arguments
text
text
Method WARN()
Logger to report warnings. Used internally
Usage
ocs4RLogger$WARN(text)
Arguments
text
text
Method ERROR()
Logger to report errors Used internally
Usage
ocs4RLogger$ERROR(text)
Arguments
text
text
Method getClassName()
Get class name
Usage
ocs4RLogger$getClassName()
Returns
the class name
Method getClass()
Get class
Usage
ocs4RLogger$getClass()
Returns
the class
Method clone()
The objects of this class are cloneable with this method.
Usage
ocs4RLogger$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Note
Logger class used internally by ocs4R
ocsApiSharingManager
Description
ocsApiSharingManager
ocsApiSharingManager
Format
R6Class
object.
Value
Object of R6Class
for modelling an ocsManager for the Sharing API
Super classes
ocs4R::ocs4RLogger
-> ocs4R::ocsManager
-> ocsApiSharingManager
Methods
Public methods
Inherited methods
ocs4R::ocs4RLogger$ERROR()
ocs4R::ocs4RLogger$INFO()
ocs4R::ocs4RLogger$WARN()
ocs4R::ocs4RLogger$getClass()
ocs4R::ocs4RLogger$getClassName()
ocs4R::ocs4RLogger$logger()
ocs4R::ocsManager$connect()
ocs4R::ocsManager$getAPISharingManager()
ocs4R::ocsManager$getAPIUserProvisioningManager()
ocs4R::ocsManager$getAPIWebdavManager()
ocs4R::ocsManager$getCapabilities()
ocs4R::ocsManager$getVersion()
Method new()
Initialize manager
Usage
ocsApiSharingManager$new(url, user, pwd, logger = NULL, keyring_backend = NULL)
Arguments
url
url
user
user
pwd
pwd
logger
logger
keyring_backend
backend to use with keyring. Default is
NULL
Method getShares()
Get list of shares as list
. To return as data.frame
,
set pretty = TRUE
. The method accepts additional parameters.
Usage
ocsApiSharingManager$getShares( path = NULL, reshares = FALSE, shared_with_me = NULL, state = NULL, subfiles = FALSE, pretty = FALSE )
Arguments
path
path
reshares
reshares
shared_with_me
list only those shared with me?
state
state
subfiles
subfiles
pretty
pretty
Returns
the list of shares as list
or data.frame
Method createShare()
Creates a share for the path (file or folder), given a name. The shareType
should be among
values 'user','group','publiclink' or 'federated'.The shareWith
is required for shareType
'user' and 'group' and corresponds to the username or groupname. The permissions
can be set among
values 'read', 'update', 'create', 'delete', 'read-write', 'share', 'all'. By default the permissions will
be the default permissions set by the ocs server (by default 'all').
Usage
ocsApiSharingManager$createShare( path, name, shareType, shareWith, publicUpload = NULL, password = NULL, permissions = NULL, expireDate = NULL )
Arguments
path
path
name
name
shareType
the type of share
shareWith
a list of users to share with
publicUpload
public upload
password
to set to access the share
permissions
permissions
expireDate
expire date
Method shareWithUser()
Shares a resource (file or folder) with a user given its username handled with argument username
.
The permissions
can be set among values 'read', 'update', 'create', 'delete', 'read-write', 'share',
'all'. By default the permissions will be the default permissions set by the ocs server (by default 'all').
Returns
Usage
ocsApiSharingManager$shareWithUser( path, name, username, permissions = NULL, pretty = FALSE )
Arguments
path
path
name
name
username
username
permissions
permissions
pretty
pretty
group
group
Returns
the share properties as list
(or asdata.frame
if pretty
is set to TRUE).
Method shareWithGroup()
Shares a resource (file or folder) with a group given its name handled with argument group
.
The permissions
can be set among values 'read', 'update', 'create', 'delete', 'read-write', 'share',
'all'. By default the permissions will be the default permissions set by the ocs server (by default 'all').
Usage
ocsApiSharingManager$shareWithGroup( path, name, group, permissions = NULL, pretty = FALSE )
Arguments
path
path
name
name
group
group
permissions
permissions
pretty
pretty
Returns
the share properties as list
(or asdata.frame
if pretty
is set to TRUE).
Method shareAsPublicLink()
Shares a resource (file or folder) as public link. The function returns the public link generated by ocs.
Usage
ocsApiSharingManager$shareAsPublicLink( path, name = NULL, publicUpload = FALSE, password = NULL, permissions = NULL, expireDate = NULL )
Arguments
path
path
name
name
publicUpload
public upload?
password
password
permissions
permissions
expireDate
expire date
return
the public sharing link
Method clone()
The objects of this class are cloneable with this method.
Usage
ocsApiSharingManager$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Author(s)
Emmanuel Blondel <emmanuel.blondel1@gmail.com>
ocsApiUserProvisioningManager
Description
ocsApiUserProvisioningManager
ocsApiUserProvisioningManager
Format
R6Class
object.
Value
Object of R6Class
for modelling an ocsManager for Webdav API
Super classes
ocs4R::ocs4RLogger
-> ocs4R::ocsManager
-> ocsApiUserProvisioningManager
Methods
Public methods
Inherited methods
ocs4R::ocs4RLogger$ERROR()
ocs4R::ocs4RLogger$INFO()
ocs4R::ocs4RLogger$WARN()
ocs4R::ocs4RLogger$getClass()
ocs4R::ocs4RLogger$getClassName()
ocs4R::ocs4RLogger$logger()
ocs4R::ocsManager$connect()
ocs4R::ocsManager$getAPISharingManager()
ocs4R::ocsManager$getAPIUserProvisioningManager()
ocs4R::ocsManager$getAPIWebdavManager()
ocs4R::ocsManager$getCapabilities()
ocs4R::ocsManager$getVersion()
Method new()
Initialize manager
Usage
ocsApiUserProvisioningManager$new( url, user, pwd, logger = NULL, keyring_backend = "env" )
Arguments
url
url
user
user
pwd
pwd
logger
logger
keyring_backend
backend to use with keyring. Default is
NULL
Method addUser()
Adds a user given a userid
(required). All other fields (email, password, groups) are
optional for the user creation. Returns TRUE
if the user is added, FALSE
otherwise.
Usage
ocsApiUserProvisioningManager$addUser( userid, email = NULL, password = NULL, groups = NULL )
Arguments
userid
user ID
email
email
password
user password
groups
groups
Method getUsers()
Get the list of users. This method returns a vector of class 'character' giving the user IDs available in the OCS cloud plateform.
Usage
ocsApiUserProvisioningManager$getUsers()
Method getUser()
Get the user details from its userid
. If the argument pretty
is set to TRUE,
this will return an object of class data.frame
, otherwise (by default) it returns
an object of class list
.
Usage
ocsApiUserProvisioningManager$getUser(userid, pretty = FALSE)
Arguments
userid
user ID
pretty
pretty
Method editUser()
Edits a user, identifier by a userid. The user property to be edited should be set using its
key (eg display) and the value to be modified for this key. Returns TRUE
if the user
is edited, FALSE
otherwise.
Usage
ocsApiUserProvisioningManager$editUser(userid, key, value)
Arguments
userid
user ID
key
key
value
value
Method editUserDisplayName()
Edits a user display name.
Usage
ocsApiUserProvisioningManager$editUserDisplayName(userid, displayName)
Arguments
userid
user ID
displayName
display name
Method editUserEmail()
Edits a user email
Usage
ocsApiUserProvisioningManager$editUserEmail(userid, email)
Arguments
userid
user ID
email
email
Method editUserPassword()
Edits a user password
Usage
ocsApiUserProvisioningManager$editUserPassword(userid, password)
Arguments
userid
user ID
password
password
Method editUserQuota()
Edits a user quota
Usage
ocsApiUserProvisioningManager$editUserQuota(userid, quota)
Arguments
userid
user ID
quota
quota
Method enableUser()
Enables a user
Usage
ocsApiUserProvisioningManager$enableUser(userid)
Arguments
userid
user ID
Returns
TRUE
if enabled, FALSE
otherwise
Method disableUser()
Disables a user
Usage
ocsApiUserProvisioningManager$disableUser(userid)
Arguments
userid
user ID
Returns
TRUE
if disabled, FALSE
otherwise
Method deleteUser()
Deletes a user
Usage
ocsApiUserProvisioningManager$deleteUser(userid)
Arguments
userid
user ID
Returns
TRUE
if deleted, FALSE
otherwise
Method getUserGroups()
Get user groups
Usage
ocsApiUserProvisioningManager$getUserGroups(userid)
Arguments
userid
user ID
Returns
the user groups
Method addToGroup()
Adds a user to a group.
Usage
ocsApiUserProvisioningManager$addToGroup(userid, groupid)
Arguments
userid
user ID
groupid
group ID
Returns
TRUE
if added, FALSE
otherwise
Method removeFromGroup()
Removes a user from a group.
Usage
ocsApiUserProvisioningManager$removeFromGroup(userid, groupid)
Arguments
userid
user ID
groupid
group ID
Returns
TRUE
if removed, FALSE
otherwise
Method createSubadmin()
Creates a subadmin
Usage
ocsApiUserProvisioningManager$createSubadmin()
Method removeSubadmin()
Removes a subadmin
Usage
ocsApiUserProvisioningManager$removeSubadmin()
Method getSubadminGroups()
Get subadmin groups
Usage
ocsApiUserProvisioningManager$getSubadminGroups()
Method getGroups()
Get the list of groups. This method returns a vector of class 'character' giving the usergroups IDs
Usage
ocsApiUserProvisioningManager$getGroups( search = NULL, limit = NULL, offset = NULL )
Arguments
search
search
limit
limit
offset
offset
Method addGroup()
Adds a group
Usage
ocsApiUserProvisioningManager$addGroup(groupid)
Arguments
groupid
group ID
Returns
TRUE
if added, FALSE
Method getGroup()
Gets a group
Usage
ocsApiUserProvisioningManager$getGroup(groupid)
Arguments
groupid
group ID
Returns
the group as list
including the group ID and the list of users
Method deleteGroup()
Deletes a group
Usage
ocsApiUserProvisioningManager$deleteGroup(groupid)
Arguments
groupid
group ID
Returns
TRUE
if deleted, FALSE
Method getSubadmins()
Get subadmins
Usage
ocsApiUserProvisioningManager$getSubadmins()
Method clone()
The objects of this class are cloneable with this method.
Usage
ocsApiUserProvisioningManager$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Author(s)
Emmanuel Blondel <emmanuel.blondel1@gmail.com>
ocsApiWebdavManager
Description
ocsApiWebdavManager
ocsApiWebdavManager
Format
R6Class
object.
Value
Object of R6Class
for modelling an ocsManager for Webdav API
Super classes
ocs4R::ocs4RLogger
-> ocs4R::ocsManager
-> ocsApiWebdavManager
Methods
Public methods
Inherited methods
ocs4R::ocs4RLogger$ERROR()
ocs4R::ocs4RLogger$INFO()
ocs4R::ocs4RLogger$WARN()
ocs4R::ocs4RLogger$getClass()
ocs4R::ocs4RLogger$getClassName()
ocs4R::ocs4RLogger$logger()
ocs4R::ocsManager$connect()
ocs4R::ocsManager$getAPISharingManager()
ocs4R::ocsManager$getAPIUserProvisioningManager()
ocs4R::ocsManager$getAPIWebdavManager()
ocs4R::ocsManager$getCapabilities()
ocs4R::ocsManager$getVersion()
Method new()
Initialize manager
Usage
ocsApiWebdavManager$new(url, user, pwd, logger = NULL, keyring_backend = NULL)
Arguments
url
url
user
user
pwd
pwd
logger
logger
keyring_backend
backend to use with keyring. Default is
NULL
Method getWebdavRoot()
Get the 'ocs' WebDAV root URL
Usage
ocsApiWebdavManager$getWebdavRoot()
Method listFiles()
WebDAV method to list folders/files given a relative path. The relative path is set
to "/"
by default, which corresponds to the root of the 'ocs' repository.
Usage
ocsApiWebdavManager$listFiles(relPath = "/")
Arguments
relPath
relative path
Returns
the list of files
Method makeCollection()
WebDAV method to make a collection. By default relPath
is set to "/"
(root).
The name
is the name of the new collection to be created. The function is recursive
in the sense that a name
can be provided as relative path of a collection tree
(eg newfolder1/newfolder2/newfolder3
), the function will create recursively as
many collections are handled in the name.
Usage
ocsApiWebdavManager$makeCollection(name, relPath = "/")
Arguments
name
name
relPath
relative path
Method uploadFile()
WebDAV method to upload a file. By default relPath
is set to "/"
(root).
Usage
ocsApiWebdavManager$uploadFile( filename, relPath = "/", delete_if_existing = FALSE )
Arguments
filename
file name
relPath
relative path
delete_if_existing
delete if existing file? Default is
FALSE
Method deleteFile()
WebDAV method to delete a file. By default relPath
is set to "/"
(root).
Usage
ocsApiWebdavManager$deleteFile(filename, relPath = "/")
Arguments
filename
file name
relPath
relative path
Method downloadFile()
Downloads a file
Usage
ocsApiWebdavManager$downloadFile(relPath, filename, outdir = ".")
Arguments
relPath
relative path
filename
file name
outdir
the out directory where to download the file
Method getPublicFile()
Get details of a shared public file given its share token
Usage
ocsApiWebdavManager$getPublicFile(share_token)
Arguments
share_token
the share token
Method clone()
The objects of this class are cloneable with this method.
Usage
ocsApiWebdavManager$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Author(s)
Emmanuel Blondel <emmanuel.blondel1@gmail.com>
ocsManager
Description
ocsManager
ocsManager
Format
R6Class
object.
Value
Object of R6Class
for modelling an ocsManager
Super class
ocs4R::ocs4RLogger
-> ocsManager
Public fields
apis
list of APIs
Methods
Public methods
Inherited methods
Method new()
This method is used to instantiate an ocsManager. The user/pwd are mandatory in order to connect to 'ocs'. The logger can be either NULL, "INFO" (with minimum logs), or "DEBUG" (for complete curl http calls logs).
The keyring_backend
can be set to use a different backend for storing
the user password with keyring (Default value is NULL, meaning the password
is stored as private field).
Usage
ocsManager$new(url, user, pwd, logger = NULL, keyring_backend = NULL)
Arguments
url
url
user
user
pwd
pwd
logger
logger type
keyring_backend
keyring back-end. Default is
NULL
Method connect()
Method to connect to 'ocs' and set version/capabilities
Usage
ocsManager$connect()
Method getVersion()
Get the 'ocs' server version
Usage
ocsManager$getVersion()
Method getCapabilities()
Get the 'ocs' server capabilities
Usage
ocsManager$getCapabilities()
Method getAPIWebdavManager()
Get the Webdav API manager
Usage
ocsManager$getAPIWebdavManager()
Returns
an instance of ocsApiWebdavManager
Method getAPISharingManager()
Get the Sharing API manager
Usage
ocsManager$getAPISharingManager()
Returns
an instance of ocsApiSharingManager
Method getAPIUserProvisioningManager()
Get the User Provisioning API manager
Usage
ocsManager$getAPIUserProvisioningManager()
Returns
an instance of ocsApiUserProvisioningManager
Method clone()
The objects of this class are cloneable with this method.
Usage
ocsManager$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Author(s)
Emmanuel Blondel <emmanuel.blondel1@gmail.com>
Examples
## Not run:
#Not Run:
#Connect to an OCS API
OCS <- ocsManager$new(url = ocs_url, user = ocs_user, pwd = ocs_pwd, logger = "DEBUG")
version <- OCS$getVersion()
caps <- OCS$getCapabilities()
#OCS User Provisioning API
#-------------------------------------
#users
users <- OCS$getUsers() #get users
user <- OCS$getUser("admin") #get a user
user.df <- OCS$getUser("admin", TRUE) #the same user as data.frame
added <- OCS$addUser("john.doe", password = "ocs4john") #add a user
disabled <- OCS$disableUser("john.doe") #disable a user
enabled <- OCS$enableUser("john.doe") #enable auser
edited <- OCS$editUser("john.doe", key = "display", value = "John Doe") #edit user
#edit some user field
edited2 <- OCS$editUserDisplayName("john.doe", displayName = "John Doe Jr.")
deleted <- OCS$deleteUser("john.doe")
#groups
admingroups <- OCS$getUserGroups("admin")
groups <- OCS$getGroups()
added <- OCS$addGroup("scientists") #add a new group
sc_group <- OCS$getGroup("scientists") #get group details
added <- OCS$addToGroup("john.doe", "scientists") #add user to group
removed <- OCS$removeFromGroup("john.doe", "scientists") #remove user from group
deleted <- OCS$deleteGroup("scientists")
#OCS Webdav API
#-------------------------------------
#list files
files <- OCS$listFiles()
subfiles <- OCS$listFiles("Documents")
#make collection
OCS$makeCollection("myfolder")
subfiles <- OCS$listFiles("myfolder")
#upload a file?
filename <- "magic.txt"
file.create(filename); writeLines("ocs4R is great", filename)
#we upload the file in 'Documents' folder
OCS$uploadFile(filename, "/Documents")
#check if file is uploaded
OCS$listFiles('Documents')
#OCS Sharing API
#-------------------------------------
#let's add a user with User provisioning API
added <- OCS$addUser("john.doe", password = "ocs4john") #add a user
#let's share the previously uploaded file with John Doe
OCS$shareWithUser("/Documents", filename, "john.doe")
## End(Not run)
ocsRequest
Description
ocsRequest
ocsRequest
Format
R6Class
object.
Value
Object of R6Class
for modelling a generic 'ocs' web-service request
Methods
new(type, url, request, user, pwd, token, cookies, format, namedParams, content, contentType, filename, logger, ...)
-
This method is used to instantiate a object for doing an 'ocs' web-service request
getRequest()
-
Get the request payload
getRequestHeaders()
-
Get the request headers
getStatus()
-
Get the request status code
getResponse()
-
Get the request response
getException()
-
Get the exception (in case of request failure)
getResult()
-
Get the result
TRUE
if the request is successful,FALSE
otherwise
Super class
ocs4R::ocs4RLogger
-> ocsRequest
Methods
Public methods
Inherited methods
Method new()
This method is used to instantiate a object for doing an 'ocs' web-service request
Usage
ocsRequest$new( type, url, request, user = NULL, pwd = NULL, token = NULL, cookies = NULL, format = "json", namedParams = list(), content = NULL, contentType = "text/plain", filename = NULL, logger = NULL, ... )
Arguments
type
type of request
url
url
request
request
user
user
pwd
pwd
token
token
cookies
cookies
format
format. Default is "json"
namedParams
a list of named parameters
content
content
contentType
content type. Default is "text/plain"
filename
file name
logger
logger
...
additional parameters
Method execute()
Executes the request
Usage
ocsRequest$execute()
Method getRequest()
Get request
Usage
ocsRequest$getRequest()
Method getRequestHeaders()
Get request headers
Usage
ocsRequest$getRequestHeaders()
Method getStatus()
Get status
Usage
ocsRequest$getStatus()
Method getResponse()
Get response
Usage
ocsRequest$getResponse()
Method getException()
Get exception
Usage
ocsRequest$getException()
Method getResult()
Get result
Usage
ocsRequest$getResult()
Method setResult()
Set result
Usage
ocsRequest$setResult(result)
Arguments
result
result
Method clone()
The objects of this class are cloneable with this method.
Usage
ocsRequest$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Note
Abstract class used internally by ocs4R
Author(s)
Emmanuel Blondel <emmanuel.blondel1@gmail.com>