Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions R/attachments.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Mime types
mime_type_mapping <- list(
aac = "audio/aac",
abw = "application/x-abiword",
apng = "image/apng",
arc = "application/x-freearc",
avif = "image/avif",
avi = "video/x-msvideo",
azw = "application/vnd.amazon.ebook",
bin = "application/octet-stream",
bmp = "image/bmp",
bz = "application/x-bzip",
bz2 = "application/x-bzip2",
cda = "application/x-cdf",
csh = "application/x-csh",
css = "text/css",
csv = "text/csv",
doc = "application/msword",
docx = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
eot = "application/vnd.ms-fontobject",
epub = "application/epub+zip",
gz = "application/gzip",
gif = "image/gif",
htm = "text/html",
html = "text/html",
ico = "image/vnd.microsoft.icon",
ics = "text/calendar",
jar = "application/java-archive",
jpeg = "image/jpeg",
jpg = "image/jpeg",
js = "text/javascript",
json = "application/json",
jsonld = "application/ld+json",
mid = "audio/midi",
midi = "audio/x-midi",
mjs = "text/javascript",
mp3 = "audio/mpeg",
mp4 = "video/mp4",
mpeg = "video/mpeg",
mpkg = "application/vnd.apple.installer+xml",
odp = "application/vnd.oasis.opendocument.presentation",
ods = "application/vnd.oasis.opendocument.spreadsheet",
odt = "application/vnd.oasis.opendocument.text",
oga = "audio/ogg",
ogv = "video/ogg",
ogx = "application/ogg",
opus = "audio/ogg",
otf = "font/otf",
png = "image/png",
pdf = "application/pdf",
php = "application/x-httpd-php",
ppt = "application/vnd.ms-powerpoint",
pptx = "application/vnd.openxmlformats-officedocument.presentationml.presentation",
rar = "application/vnd.rar",
rtf = "application/rtf",
sh = "application/x-sh",
svg = "image/svg+xml",
tar = "application/x-tar",
tif = "image/tiff",
tiff = "image/tiff",
ts = "video/mp2t",
ttf = "font/ttf",
txt = "text/plain",
vsd = "application/vnd.visio",
wav = "audio/wav",
weba = "audio/webm",
webm = "video/webm",
webp = "image/webp",
woff = "font/woff",
woff2 = "font/woff2",
xhtml = "application/xhtml+xml",
xls = "application/vnd.ms-excel",
xlsx = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
xml = "application/xml",
xul = "application/vnd.mozilla.xul+xml",
zip = "application/zip",
`3gp` = "video/3gpp",
`3g2` = "video/3gpp2",
`7z` = "application/x-7z-compressed"
)


#' Add an attachment
#'
#' Stage an attachment to a formId, recordId, and fieldId
#' Commit the staged attachment


#' Stage attachment
#'
#' Stages an attachment to a form, field and record and returns the reference


#' Remove attachments
#'
#' Remove one or more attachment from a form, field and record


#' Gets an attachment
#'
#' Retrieve an attachment and store it to a temporary file. The name
#' of the temporary file is returned.
#'
#' @param formId a form id
#' @param recordId the record Id
#' @param fieldId the attachment field id
#' @param blobId the attachment blob id
#' @export
#' @family record functions
#'
getAttachment <- function(formId, recordId, fieldId, blobId) {
url <- modify_url(activityInfoRootUrl(), path = sprintf("resources/form/%s/record/%s/field/%s/blob/%s/signature.png",
formId,
recordId,
fieldId,
blobId))
message("Sending GET request to ", url)

tmp <- tempfile()

result <- GET(url, activityInfoAuthentication(), accept_json(), write_disk(tmp))

checkForError(result)

if (result$status_code != 200) {
stop(sprintf("Request for %s failed with status code %d %s: %s",
url, result$status_code, http_status(result$status_code)$message,
content(result, as = "text", encoding = "UTF-8")))
} else {
message_for_status(result)
}

tmp
}
2 changes: 0 additions & 2 deletions R/formField.R
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,6 @@ addFormFieldSchemaCustomClass <- function(e) {
class(e) <- c("activityInfoAttachmentFieldSchema", class(e))
} else if (e$type == "calculated") {
class(e) <- c("activityInfoCalculatedFieldSchema", class(e))
} else if (e$type == "attachment") {
class(e) <- c("activityInfoAttachmentFieldSchema", class(e))
} else if (e$type == "subform") {
class(e) <- c("activityInfoSubformFieldSchema", class(e))
} else if (e$type == "geopoint") {
Expand Down
Loading