From 40681cca51261b25752751d418cb74c38ec52a31 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Thu, 11 Jul 2024 17:19:08 -0500 Subject: [PATCH 01/18] httr replacement functions --- R/curl.R | 154 +++++++++++++++++++++++++++++++++++++ R/exportDataQuality.R | 2 +- R/importFiles.R | 2 +- R/importToFileRepository.R | 2 +- R/makeApiCall.R | 19 ++--- R/redcapAPI-package.R | 2 + R/redcapConnection.R | 2 +- R/zzz.R | 5 +- 8 files changed, 170 insertions(+), 18 deletions(-) create mode 100644 R/curl.R diff --git a/R/curl.R b/R/curl.R new file mode 100644 index 00000000..f04a3a1f --- /dev/null +++ b/R/curl.R @@ -0,0 +1,154 @@ +#' @keywords internal + +.curlCompact <- function(x) +{ + lx <- vapply(x, length, numeric(1)) + x[lx != 0] +} + +.curlConfig <- function(..., token = NULL) +{ + opt <- list(...) + structure(list( + method = NULL, + url = NULL, + headers = NULL, + fields = NULL, + options = .curlCompact(opt), + auth_token = token, + output = NULL + ), class = "request") +} + +.curlSetConfig <- function(config, override = FALSE) +{ + stopifnot(inherits(config, "request")) + old <- getOption("httr_config") + if(is.null(old)) old <- .curlConfig() + if(!override) config <- c(old, config) + options(httr_config = config) + invisible(old) +} + +.curlUploadFile <- function(path, type = NULL) +{ + stopifnot(is.character(path), length(path) == 1, file.exists(path)) + if (is.null(type)) { + type <- mime::guess_type(path) + } + curl::form_file(path, type) +} + +.curlTimeout <- function(seconds) +{ + if (seconds < 0.001) { + stop("Timeout cannot be less than 1 ms", call. = FALSE) + } + config(timeout_ms = seconds * 1000) +} + +.curlContent <- function(x, ...) +{ + stopifnot(inherits(x, "response")) + if (is.path(x$content)) { + raw <- readBin(x$content, "raw", file.info(x$content)$size) + } else { + raw <- x$content + } + if (length(raw) == 0) { + return(NULL) + } + enc <- if(grepl("charset", x$headers[["content-type"]])) + toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["content-type"]])) + else + 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) + x <- iconv(readBin(raw, character()), from = env, to = 'UTF-8', '\U25a1') + if(grepl('\U25a1', x)) warning("Project contains invalid characters. Mapped to '\U25a1'.") + jsonlite::fromJSON(x, simplifyVector = FALSE, ...) +} + +.curlDefaultUa <- function() { + # cache this? + versions <- c(libcurl = curl::curl_version()$version, `r-curl` = as.character(utils::packageVersion("curl"))) + paste0(names(versions), "/", versions, collapse = " ") +} + +.curlRequestCombine <- function(x, y) { + z <- structure(list( + method = NULL, + url = NULL, + headers = NULL, + fields = c(x$fields, y$fields), + options = NULL, + auth_token = NULL, + output = NULL + ), class = "request") + h <- c(x$headers, y$headers) + o <- c(x$options, y$options) + z$headers <- h[!duplicated(names(h), fromLast = TRUE)] + z$options <- o[!duplicated(names(h), fromLast = TRUE)] + for(i in c('method','url','auth_token','output')) { + if(!is.null(y[[i]])) { + z[[i]] <- y[[i]] + } else if(!is.null(x[[i]])) { + z[[i]] <- x[[i]] + } + } + z +} + +.curlRequestDefault <- function() { + dr <- structure(list( + method = NULL, + url = NULL, + headers = c(Accept = "application/json, text/xml, application/xml, */*"), + fields = NULL, + options = list(useragent = .curlDefaultUa()), + auth_token = NULL, + output = structure(list(), class = c("write_memory", "write_function")) + ), class = "request") + .curlRequestCombine(dr, getOption("httr_config")) +} + +.curlPost <- function(url, body, config = list()) { + h <- curl::new_handle() + body <- .curlCompact(body) + nms <- names(body) + if(is.null(nms) || any(is.na(nms) | nms == '')) { + stop("All components of body must be named", call. = FALSE) + } + flds <- lapply(body, function(x) x) + + req <- structure(list( + method = "POST", + url = url, + headers = config$headers, + fields = c(flds, config$fields), + options = config$options, + auth_token = config$auth_token, + output = config$output + ), class = "request") + req <- .curlRequestCombine(.curlRequestDefault(), req) + req$options$post <- TRUE + + curl::handle_setopt(h, .list = req$options) + if (!is.null(req$fields)) { + curl::handle_setform(h, .list = req$fields) + } + curl::handle_setheaders(h, .list = req$headers) + on.exit(curl::handle_reset(h), add = TRUE) + + resp <- curl::curl_fetch_memory(req$url, h) + rh <- curl::parse_headers_list(resp$headers) + structure(list( + url = resp$url, + status_code = resp$status_code, + headers = rh, + all_headers = resp$headers, + cookies = curl::handle_cookies(h), + content = resp$content, + times = resp$times, + request = req, + handle = h + ), class = "response") +} diff --git a/R/exportDataQuality.R b/R/exportDataQuality.R index 59b71e21..2edcb06d 100644 --- a/R/exportDataQuality.R +++ b/R/exportDataQuality.R @@ -52,7 +52,7 @@ exportDataQuality.redcapApiConnection <- tryCatch( { - result <- httr::content(response, type = 'application/json') + result <- .curlContent(response, type = 'application/json') }, error = function(e) { diff --git a/R/importFiles.R b/R/importFiles.R index 28db524e..cfd794f4 100644 --- a/R/importFiles.R +++ b/R/importFiles.R @@ -128,7 +128,7 @@ importFiles.redcapApiConnection <- function(rcon, action = 'import', record = record, field = field, - file = httr::upload_file(file), + file = .curlUploadFile(file), returnFormat = 'csv', event = event, repeat_instance = repeat_instance) diff --git a/R/importToFileRepository.R b/R/importToFileRepository.R index ce8e5d67..05b2131f 100644 --- a/R/importToFileRepository.R +++ b/R/importToFileRepository.R @@ -47,7 +47,7 @@ importToFileRepository.redcapApiConnection <- function(rcon, body <- list(content = "fileRepository", action = "import", returnFormat = "csv", - file = httr::upload_file(file), + file = .curlUploadFile(file), folder_id = folder_id) # flush the cached File Repository ------------------------------ diff --git a/R/makeApiCall.R b/R/makeApiCall.R index 4fa831b6..e3deb354 100644 --- a/R/makeApiCall.R +++ b/R/makeApiCall.R @@ -194,7 +194,7 @@ makeApiCall <- function(rcon, response <- tryCatch( { - httr::POST(url = url, body = body, config = config) + .curlPost(url = url, body = body, config = config) }, error=function(e) { @@ -202,12 +202,9 @@ makeApiCall <- function(rcon, { structure( list( - status_code=408L, - content=charToRaw(e$message), - headers=structure( - list('Content-Type'="text/csv; charset=utf-8"), - class = c("insensitive", "list") - ) + status_code = 408L, + content = charToRaw(e$message), + headers = list('content-type' = "text/csv; charset=utf-8") ), class="response") } else @@ -261,10 +258,10 @@ makeApiCall <- function(rcon, { if(response$status_code == 301L) { - warning(paste("Permanent 301 redirect", response$url, "to", response$headers$Location)) + warning(paste("Permanent 301 redirect", response$url, "to", response$headers$location)) } else { - message(paste("Temporary 302 redirect", response$url, "to", response$headers$Location)) + message(paste("Temporary 302 redirect", response$url, "to", response$headers$location)) } # Good for a single call @@ -317,8 +314,8 @@ as.data.frame.response <- function(x, row.names=NULL, optional=FALSE, ...) na.strings <- extra$na.strings if(is.null(na.strings)) na.strings <- "" - enc <- if(grepl("charset", x$headers[["Content-Type"]])) - toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["Content-Type"]])) else + enc <- if(grepl("charset", x$headers[["content-type"]])) + toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["content-type"]])) else 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) mapped <- iconv(readBin(x$content, character()), enc, 'UTF-8', '\U25a1') diff --git a/R/redcapAPI-package.R b/R/redcapAPI-package.R index d587c653..7db53c15 100644 --- a/R/redcapAPI-package.R +++ b/R/redcapAPI-package.R @@ -16,5 +16,7 @@ #' #' @name redcapAPI #' @keywords internal +#' @importFrom mime guess_type +#' @importFrom jsonlite fromJSON "_PACKAGE" diff --git a/R/redcapConnection.R b/R/redcapConnection.R index 23c5a1df..2f27c3f6 100644 --- a/R/redcapConnection.R +++ b/R/redcapConnection.R @@ -1058,7 +1058,7 @@ print.redcapOfflineConnection <- function(x, ...){ #' @importFrom httr config .get_httr_config <- function() { - config <- httr::config() + config <- .curlConfig() class(config) <- "list" config[lengths(config) > 0] diff --git a/R/zzz.R b/R/zzz.R index 9f961c90..88fda393 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -13,9 +13,8 @@ packageStartupMessage( # Set the time out to five minutes (300 seconds) # If a setting had already existed for timeout_ms, restore it. # We do not want to disrupt the user's settings - old <- httr::set_config(httr::timeout(300)) + old <- .curlSetConfig(.curlTimeout(300)) if (!is.null(old$options$timeout_ms) && old$options$timeout_ms != 3e+05){ - httr::set_config(old) + .curlSetConfig(old) } } - From 12fd78b82aa5d333b0b127ba3474ca9be264efe9 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Thu, 11 Jul 2024 17:41:53 -0500 Subject: [PATCH 02/18] run doc and fix misspelled variable --- NAMESPACE | 17 ++++++++++++----- R/curl.R | 6 +++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 94f7694d..b6b0a3cd 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -217,12 +217,18 @@ export(vectorToApiBodyList) export(widerRepeated) import(checkmate) importFrom(chron,times) +importFrom(curl,curl_fetch_memory) +importFrom(curl,curl_version) +importFrom(curl,form_file) +importFrom(curl,handle_cookies) +importFrom(curl,handle_reset) +importFrom(curl,handle_setform) +importFrom(curl,handle_setheaders) +importFrom(curl,handle_setopt) +importFrom(curl,new_handle) +importFrom(curl,parse_headers_list) importFrom(getPass,getPass) -importFrom(httr,POST) -importFrom(httr,config) -importFrom(httr,content) -importFrom(httr,set_config) -importFrom(httr,upload_file) +importFrom(jsonlite,fromJSON) importFrom(keyring,key_delete) importFrom(keyring,key_get) importFrom(keyring,key_list) @@ -234,6 +240,7 @@ importFrom(labelVector,get_label) importFrom(labelVector,is.labelled) importFrom(labelVector,set_label) importFrom(lubridate,parse_date_time) +importFrom(mime,guess_type) importFrom(stats,reshape) importFrom(utils,capture.output) importFrom(utils,compareVersion) diff --git a/R/curl.R b/R/curl.R index f04a3a1f..eeeca4bc 100644 --- a/R/curl.R +++ b/R/curl.R @@ -44,13 +44,13 @@ if (seconds < 0.001) { stop("Timeout cannot be less than 1 ms", call. = FALSE) } - config(timeout_ms = seconds * 1000) + .curlConfig(timeout_ms = seconds * 1000) } .curlContent <- function(x, ...) { stopifnot(inherits(x, "response")) - if (is.path(x$content)) { + if (inherits(x$content, 'path')) { raw <- readBin(x$content, "raw", file.info(x$content)$size) } else { raw <- x$content @@ -62,7 +62,7 @@ toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["content-type"]])) else 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) - x <- iconv(readBin(raw, character()), from = env, to = 'UTF-8', '\U25a1') + x <- iconv(readBin(raw, character()), from = enc, to = 'UTF-8', '\U25a1') if(grepl('\U25a1', x)) warning("Project contains invalid characters. Mapped to '\U25a1'.") jsonlite::fromJSON(x, simplifyVector = FALSE, ...) } From 87999e6e892101a7d8eede2dcb74e41b60e21e01 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Mon, 15 Jul 2024 12:15:51 -0500 Subject: [PATCH 03/18] force api call body to character --- R/curl.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/curl.R b/R/curl.R index eeeca4bc..a8853a6b 100644 --- a/R/curl.R +++ b/R/curl.R @@ -117,7 +117,7 @@ if(is.null(nms) || any(is.na(nms) | nms == '')) { stop("All components of body must be named", call. = FALSE) } - flds <- lapply(body, function(x) x) + flds <- lapply(body, function(x) as.character(x)) req <- structure(list( method = "POST", From dff3af908a3e58114fe24e03709c7571920178dd Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Mon, 15 Jul 2024 15:01:27 -0500 Subject: [PATCH 04/18] test makeApiCall changed Content-Type to content-type #397 --- tests/testthat/test-050-makeApiCall.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testthat/test-050-makeApiCall.R b/tests/testthat/test-050-makeApiCall.R index b81abc93..1bb4cc1a 100644 --- a/tests/testthat/test-050-makeApiCall.R +++ b/tests/testthat/test-050-makeApiCall.R @@ -193,7 +193,7 @@ test_that( "as.data.frame.response handles invalid encoded characters", { x <- list(content=charToRaw("fa\xE7il,joe\n1,2\xE7\n3,4")) - x[['headers']] <- list('Content-Type'='text/csv; charset=utf-8') + x[['headers']] <- list('content-type'='text/csv; charset=utf-8') class(x) <- c("response","list") expect_warning({y <- redcapAPI:::as.data.frame.response(x)}, "invalid characters") @@ -202,7 +202,7 @@ test_that( data.frame(fa.il=as.integer(c(1,3)), joe=c("2\U25a1","4")) ) - x[['headers']] <- list('Content-Type'='text/csv') # defaults to latin + x[['headers']] <- list('content-type'='text/csv') # defaults to latin expect_silent({y <- redcapAPI:::as.data.frame.response(x)}) expect_equal( y, From b0fd6bc355a76931d853d38d2fb7691e97626ff0 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Mon, 15 Jul 2024 15:15:04 -0500 Subject: [PATCH 05/18] Fixed redirect test #397 --- tests/testthat/test-050-makeApiCall.R | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/testthat/test-050-makeApiCall.R b/tests/testthat/test-050-makeApiCall.R index 1bb4cc1a..2761b936 100644 --- a/tests/testthat/test-050-makeApiCall.R +++ b/tests/testthat/test-050-makeApiCall.R @@ -230,8 +230,10 @@ test_that( ) redirectCall <- TRUE - stub(makeApiCall, "httr::POST", function(...) - if(redirectCall) { redirectCall <<- FALSE; redirect } else {httr:::POST(...)}) + stub(makeApiCall, ".curlPost", function(...) + if(redirectCall) { redirectCall <<- FALSE; redirect } else + { redcapAPI:::.curlPost(...) } + ) expect_warning( response <- makeApiCall(rcon, @@ -263,9 +265,11 @@ test_that( ) redirectCall <- TRUE - stub(makeApiCall, "httr::POST", function(...) - if(redirectCall) { redirectCall <<- FALSE; redirect } else {httr:::POST(...)}) - + stub(makeApiCall, ".curlPost", function(...) + if(redirectCall) { redirectCall <<- FALSE; redirect } else + { redcapAPI:::.curlPost(...) } + ) + expect_message( response <- makeApiCall(rcon, body = list(content = "version", From 6be4b9f7fe10a20398695693c30a282a819b239d Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Tue, 16 Jul 2024 12:08:07 -0500 Subject: [PATCH 06/18] fix curl options and tests ref httr --- R/curl.R | 6 ++++-- tests/testthat/test-001-packageSetup.R | 11 +++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/R/curl.R b/R/curl.R index a8853a6b..b6b30e90 100644 --- a/R/curl.R +++ b/R/curl.R @@ -25,7 +25,9 @@ stopifnot(inherits(config, "request")) old <- getOption("httr_config") if(is.null(old)) old <- .curlConfig() - if(!override) config <- c(old, config) + if(!override) { + config <- .curlRequestCombine(old, config) + } options(httr_config = config) invisible(old) } @@ -86,7 +88,7 @@ h <- c(x$headers, y$headers) o <- c(x$options, y$options) z$headers <- h[!duplicated(names(h), fromLast = TRUE)] - z$options <- o[!duplicated(names(h), fromLast = TRUE)] + z$options <- o[!duplicated(names(o), fromLast = TRUE)] for(i in c('method','url','auth_token','output')) { if(!is.null(y[[i]])) { z[[i]] <- y[[i]] diff --git a/tests/testthat/test-001-packageSetup.R b/tests/testthat/test-001-packageSetup.R index 8a378428..7af630b2 100644 --- a/tests/testthat/test-001-packageSetup.R +++ b/tests/testthat/test-001-packageSetup.R @@ -3,22 +3,21 @@ context("Test package setup") test_that( "Default timeout set to 5 minutes (300 seconds / 30,000 milliseconds)", { - old <- httr::set_config(httr::timeout(500)) + old <- .curlSetConfig(.curlTimeout(500)) expect_equal(old$options$timeout_ms, 3e+05) - httr::set_config(old) + .curlSetConfig(old) } ) - test_that( "Setting timeout on the connection object overrides the default", { this_conn <- redcapConnection(url = rcon$url, token = rcon$token, - config = httr::config(timeout_ms = 5e+05)) + config = .curlConfig(timeout_ms = 5e+05)) default_response <- makeApiCall(rcon, body = list(content = "metadata", @@ -43,7 +42,7 @@ test_that( { this_conn <- redcapConnection(url = rcon$url, token = rcon$token, - config = httr::config(timeout_ms = 5e+05)) + config = .curlConfig(timeout_ms = 5e+05)) default_response <- makeApiCall(rcon, body = list(content = "metadata", @@ -54,7 +53,7 @@ test_that( body = list(content = "metadata", return = "csv", returnFormat = "csv"), - config = httr::config(timeout_ms = 4e+05)) + config = .curlConfig(timeout_ms = 4e+05)) expect_equal(default_response$request$options$timeout_ms, 3e+05) From 16a6330242013903d7ce010c3bdfebdfa4f88803 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Tue, 16 Jul 2024 15:53:21 -0500 Subject: [PATCH 07/18] Hopeful fix for test-101 repeatability issues #397 --- tests/testthat/test-101-userMethods-ArgumentValidation.R | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/testthat/test-101-userMethods-ArgumentValidation.R b/tests/testthat/test-101-userMethods-ArgumentValidation.R index 05693a95..5d009648 100644 --- a/tests/testthat/test-101-userMethods-ArgumentValidation.R +++ b/tests/testthat/test-101-userMethods-ArgumentValidation.R @@ -2,6 +2,13 @@ context("User Methods Argument Validation") ProjectUser <- rcon$users() +if(!EXPENDABLE_USER %in% ProjectUser) +{ + importUsers(rcon, data = data.frame(username = EXPENDABLE_USER, + data_access_groups = 0)) + ProjectUser <- rcon$users() +} + ##################################################################### # Export Users #### From 6209057fbfa49ae84483f2ff6cc3f00a8be43bc6 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Tue, 16 Jul 2024 17:21:25 -0500 Subject: [PATCH 08/18] need as.character method for reponse class --- R/curl.R | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/R/curl.R b/R/curl.R index b6b30e90..520c35ff 100644 --- a/R/curl.R +++ b/R/curl.R @@ -49,7 +49,11 @@ .curlConfig(timeout_ms = seconds * 1000) } -.curlContent <- function(x, ...) +as.character.response <- function(x, ...) { + .curlContent(x, ...) +} + +.curlContent <- function(x, type = 'text/plain', ...) { stopifnot(inherits(x, "response")) if (inherits(x$content, 'path')) { @@ -66,7 +70,13 @@ 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) x <- iconv(readBin(raw, character()), from = enc, to = 'UTF-8', '\U25a1') if(grepl('\U25a1', x)) warning("Project contains invalid characters. Mapped to '\U25a1'.") - jsonlite::fromJSON(x, simplifyVector = FALSE, ...) + if(type == 'text/cvs') { + utils::read.csv(x, ...) + } else if(type == 'application/json') { + jsonlite::fromJSON(x, simplifyVector = FALSE, ...) + } else { + x + } } .curlDefaultUa <- function() { From 69bb330121971fbacaa578f619a2940f73439412 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Tue, 16 Jul 2024 17:24:02 -0500 Subject: [PATCH 09/18] typing CSV is hard --- R/curl.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/curl.R b/R/curl.R index 520c35ff..eccd91d1 100644 --- a/R/curl.R +++ b/R/curl.R @@ -70,7 +70,7 @@ as.character.response <- function(x, ...) { 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) x <- iconv(readBin(raw, character()), from = enc, to = 'UTF-8', '\U25a1') if(grepl('\U25a1', x)) warning("Project contains invalid characters. Mapped to '\U25a1'.") - if(type == 'text/cvs') { + if(type == 'text/csv') { utils::read.csv(x, ...) } else if(type == 'application/json') { jsonlite::fromJSON(x, simplifyVector = FALSE, ...) From f52e30674c56266d52ac8df8e30ac12eb7d4b925 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Tue, 16 Jul 2024 17:48:54 -0500 Subject: [PATCH 10/18] as.character.response return empty string instead of NULL --- R/curl.R | 9 ++------- R/makeApiCall.R | 4 ++++ R/redcapError.R | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/R/curl.R b/R/curl.R index eccd91d1..4f907b50 100644 --- a/R/curl.R +++ b/R/curl.R @@ -49,10 +49,6 @@ .curlConfig(timeout_ms = seconds * 1000) } -as.character.response <- function(x, ...) { - .curlContent(x, ...) -} - .curlContent <- function(x, type = 'text/plain', ...) { stopifnot(inherits(x, "response")) @@ -61,9 +57,8 @@ as.character.response <- function(x, ...) { } else { raw <- x$content } - if (length(raw) == 0) { - return(NULL) - } + if (length(raw) == 0) return("") + enc <- if(grepl("charset", x$headers[["content-type"]])) toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["content-type"]])) else diff --git a/R/makeApiCall.R b/R/makeApiCall.R index 916b255b..cd746dde 100644 --- a/R/makeApiCall.R +++ b/R/makeApiCall.R @@ -337,3 +337,7 @@ as.data.frame.response <- function(x, row.names=NULL, optional=FALSE, ...) ...) } } + +as.character.response <- function(x, ...) { + .curlContent(x, ...) +} diff --git a/R/redcapError.R b/R/redcapError.R index d0232408..c1b28f5d 100644 --- a/R/redcapError.R +++ b/R/redcapError.R @@ -31,10 +31,10 @@ redcapError <- function(x) # Translate network error codes to user relevant message if (grepl("Connection reset by peer", error_message) || grepl("Timeout was reached", error_message)) - stop(paste0(.RESET_BY_PEER, ": ", as.character(x))) + stop(paste0(.RESET_BY_PEER, ": ", error_message)) # Otherwise just stop with code - stop(paste0(x$status_code, ": ", as.character(x))) + stop(paste0(x$status_code, ": ", error_message)) } .RESET_BY_PEER <- "A network error has occurred. This can happen when too much data is requested causing a timeout (consider batching), or when REDCap is having trouble servicing requests. It may also be a misconfigured proxy or network routing congestion." From 15edbf31f6afdf2e363992d91fa878e92204c416 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Wed, 17 Jul 2024 11:16:03 -0500 Subject: [PATCH 11/18] Remove httr dependence in tests and checked for stubs being called #397 --- tests/testthat/test-024-unlockREDCap.R | 1 - tests/testthat/test-050-makeApiCall.R | 11 ++++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test-024-unlockREDCap.R b/tests/testthat/test-024-unlockREDCap.R index 3a52986b..63a78a92 100644 --- a/tests/testthat/test-024-unlockREDCap.R +++ b/tests/testthat/test-024-unlockREDCap.R @@ -2,7 +2,6 @@ context("unlockREDCap") library(mockery) library(curl) -library(httr) h <- new_handle(timeout = 1L) redirect <- structure( diff --git a/tests/testthat/test-050-makeApiCall.R b/tests/testthat/test-050-makeApiCall.R index 2761b936..075b607c 100644 --- a/tests/testthat/test-050-makeApiCall.R +++ b/tests/testthat/test-050-makeApiCall.R @@ -2,7 +2,6 @@ context("makeApiCall Argument Validation") library(mockery) library(curl) -library(httr) # Note: This file will only test that arguments fail appropriately, or # that submethods perform as expected. the makeApiCall function @@ -64,9 +63,10 @@ test_that( rcon$set_retries(1) x <- 1 - stub(makeApiCall, "httr::POST", function(...) - if(x==1) { x <<- 2; stop(e) } else {goodVersionPOST}) + stub(makeApiCall, ".curlPost", function(...) + if(x==1) { x <<- 2; stop(e) } else {x <<- 3; goodVersionPOST}) + expect_equal(x, 2) expect_error( makeApiCall(rcon, body=list(content = "version", format = "csv"), "A network error has occurred")) @@ -96,13 +96,14 @@ test_that( ) x <- 1 - stub(makeApiCall, "httr::POST", function(...) - if(x==1) { x <<- 2; stop(e) } else {goodVersionPOST}) + stub(makeApiCall, ".curlPost", function(...) + if(x==1) { x <<- 2; stop(e) } else {x <<- 3; goodVersionPOST}) response <- makeApiCall(rcon, body = list(content = "version", format = "csv")) + expect_equal(x, 3) expect_true(response$status==200) } ) From eb82a7ca5ae4e66312d291a4ff5918c7df459215 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Wed, 17 Jul 2024 11:25:47 -0500 Subject: [PATCH 12/18] Fixed ordering of check to be post call #397 --- tests/testthat/test-050-makeApiCall.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-050-makeApiCall.R b/tests/testthat/test-050-makeApiCall.R index 075b607c..b10db39f 100644 --- a/tests/testthat/test-050-makeApiCall.R +++ b/tests/testthat/test-050-makeApiCall.R @@ -66,10 +66,10 @@ test_that( stub(makeApiCall, ".curlPost", function(...) if(x==1) { x <<- 2; stop(e) } else {x <<- 3; goodVersionPOST}) - expect_equal(x, 2) expect_error( makeApiCall(rcon, body=list(content = "version", format = "csv"), "A network error has occurred")) + expect_equal(x, 2) rcon$set_retries(5) } ) From ce0c4aae23c84181e88ef7b797210dbb336ac673 Mon Sep 17 00:00:00 2001 From: Cole Beck Date: Thu, 18 Jul 2024 12:10:29 -0500 Subject: [PATCH 13/18] fix request handling of files --- R/curl.R | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/R/curl.R b/R/curl.R index 4f907b50..80a1f1d6 100644 --- a/R/curl.R +++ b/R/curl.R @@ -41,6 +41,8 @@ curl::form_file(path, type) } +as.character.form_file <- function(x, ...) x + .curlTimeout <- function(seconds) { if (seconds < 0.001) { @@ -124,7 +126,12 @@ if(is.null(nms) || any(is.na(nms) | nms == '')) { stop("All components of body must be named", call. = FALSE) } - flds <- lapply(body, function(x) as.character(x)) + flds <- lapply(body, function(x) { + if(inherits(x, 'list') || inherits(x, 'character')) + x + else + as.character(x) + }) req <- structure(list( method = "POST", From 6f9b38baece304f93ea5752d708bc4b751e663f5 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Tue, 23 Jul 2024 11:58:59 -0500 Subject: [PATCH 14/18] Moved documentation to reference curl, #397 --- .gitlab-ci.yml | 2 +- NAMESPACE | 1 + R/documentation-common-args.R | 2 +- R/makeApiCall.R | 12 ++++++-- R/redcapConnection.R | 4 +-- .../redcapAPI-best-practices.Rmd | 26 ++++-------------- man/as.character.response.Rd | 17 ++++++++++++ man/makeApiCall.Rd | 4 +-- man/redcapConnection.Rd | 4 +-- vignettes/precompiled-best-practices.pdf | Bin 334875 -> 332184 bytes 10 files changed, 42 insertions(+), 30 deletions(-) create mode 100644 man/as.character.response.Rd diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bc472824..d581444b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,5 +10,5 @@ test: - cp $KEYRING tests/testthat.yml - apt-get update - apt-get install -y libsecret-1-dev libsodium-dev - - R --no-save -e "install.packages(c('devtools','checkmate','chron','httr','labelVector','lubridate','keyring','getPass','yaml','Hmisc','mockery'))" + - R --no-save -e "install.packages(c('devtools','checkmate','chron','curl','labelVector','lubridate','keyring','getPass','yaml','Hmisc','mockery'))" - R --no-save -e "Sys.setenv(CI=1); devtools::test(stop_on_failure=TRUE)" diff --git a/NAMESPACE b/NAMESPACE index b6b0a3cd..1839570f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,6 +2,7 @@ S3method("[",redcapFactor) S3method(allocationTable,redcapApiConnection) +S3method(as.character,response) S3method(as.list,redcapCodebook) S3method(assembleCodebook,redcapConnection) S3method(constructLinkToRedcapForm,redcapApiConnection) diff --git a/R/documentation-common-args.R b/R/documentation-common-args.R index 95db6f83..8b416b0e 100644 --- a/R/documentation-common-args.R +++ b/R/documentation-common-args.R @@ -22,7 +22,7 @@ NULL #' @description Common API arguments #' #' @param config A named `list`. Additional configuration parameters to pass to -#' [httr::POST()]. These are appended to any parameters in +#' [curl::handle_setopt]. These are appended to any parameters in #' `rcon$config`. #' @param api_param A named `list`. Additional API parameters to pass into the #' body of the API call. This provides users to execute calls with options diff --git a/R/makeApiCall.R b/R/makeApiCall.R index cd746dde..91a67560 100644 --- a/R/makeApiCall.R +++ b/R/makeApiCall.R @@ -14,7 +14,7 @@ #' for error handling. Defaults to c(200L). #' @param ... This will capture `api_param` (if specified) which will modify the body of the #' the specified body of the request. It also captures `config` which will get -#' passed to httr::POST. +#' passed to curl::handle_setopt. #' @details The intent of this function is to provide an approach to execute #' calls to the REDCap API that is both consistent and flexible. Importantly, #' this provides a framework for making calls to the API using features that @@ -28,7 +28,7 @@ #' `vectorToApiBodyList`; options that are not an array can be entered #' directly (see examples). #' -#' The config list is a list of parameters to pass to [httr::POST()]. +#' The config list is a list of parameters to pass to [curl::handle_setopt]. #' Refer to documentation there for details. #' #' Using the settings stored in the `redcapConnection` object, a response @@ -338,6 +338,14 @@ as.data.frame.response <- function(x, row.names=NULL, optional=FALSE, ...) } } +#' @name as.character.response +#' @title S3 method to turn curl response into character +#' +#' @description Converts a raw curl response into a character string. +#' @export +#' @param x response from curl to render to character +#' @param ... If type='text/csv' this is passed to read.csv. If type='application/json' +#' this is sent to jsonlite::fromJSON as.character.response <- function(x, ...) { .curlContent(x, ...) } diff --git a/R/redcapConnection.R b/R/redcapConnection.R index 2f62df9e..80adcf84 100644 --- a/R/redcapConnection.R +++ b/R/redcapConnection.R @@ -6,7 +6,7 @@ #' #' @param url `character(1)`. URL for the user's REDCap database API. #' @param token `character(1)` REDCap API token -#' @param config A list to be passed to [httr::POST()]. This allows the +#' @param config A list to be passed to [curl::handle_setopt]. This allows the #' user to set additional configurations for the API calls, such as #' certificates, SSL version, etc. For the majority of users, this does #' not need to be altered. @@ -81,7 +81,7 @@ #' project for which the user wishes to use the API. #' #' Additional Curl option can be set in the `config` argument. See the documentation -#' for [httr::config()] and [httr::httr_options()] for more Curl options. +#' for [curl::handle_setopt] for more curl options. #' #' ## Specific to Offline Connections #' diff --git a/inst/vignette-source/redcapAPI-best-practices.Rmd b/inst/vignette-source/redcapAPI-best-practices.Rmd index a9a84264..b4f81494 100644 --- a/inst/vignette-source/redcapAPI-best-practices.Rmd +++ b/inst/vignette-source/redcapAPI-best-practices.Rmd @@ -103,7 +103,7 @@ solution.* ```{r unlock} library(redcapAPI) suppressWarnings(library(Hmisc)) -library(httr) +library(curl) options(keyring_backend=keyring::backend_file) # Put in .Rprofile @@ -942,25 +942,11 @@ vectorToApiBodyList(c(1, 3, 4), "arms") A call to export only a selection of arms from a project would look like this: ```{r, eval = FALSE} -makeApiCall(test_conn, - body = c(list(content = 'arm', - format = 'csv', - returnFormat = 'csv'), - vectorToApiBodyList(c(1, 3, 4), "arms"))) -``` - -## Debugging Raw Connection - -The library from 2.7.3 up supports `httr` debugging. - -```{r, echo=TRUE, message=TRUE, warning=TRUE, error=TRUE } -library(httr) -capture.output( -with_config(verbose(data_out=FALSE, data_in=TRUE, ssl=TRUE), - { test <- exportRecordsTyped(test_conn, - records = 10:20, - forms = "text_fields") }), -type="message") +as.character(makeApiCall(test_conn, + body = c(list(content = 'arm', + format = 'csv', + returnFormat = 'csv'), + vectorToApiBodyList(c(1, 3, 4), "arms")))) ``` diff --git a/man/as.character.response.Rd b/man/as.character.response.Rd new file mode 100644 index 00000000..884bb71e --- /dev/null +++ b/man/as.character.response.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/makeApiCall.R +\name{as.character.response} +\alias{as.character.response} +\title{S3 method to turn curl response into character} +\usage{ +\method{as.character}{response}(x, ...) +} +\arguments{ +\item{x}{response from curl to render to character} + +\item{...}{If type='text/csv' this is passed to read.csv. If type='application/json' +this is sent to jsonlite::fromJSON} +} +\description{ +Converts a raw curl response into a character string. +} diff --git a/man/makeApiCall.Rd b/man/makeApiCall.Rd index c1f85996..99e6766f 100644 --- a/man/makeApiCall.Rd +++ b/man/makeApiCall.Rd @@ -19,7 +19,7 @@ for error handling. Defaults to c(200L).} \item{...}{This will capture \code{api_param} (if specified) which will modify the body of the the specified body of the request. It also captures \code{config} which will get -passed to httr::POST.} +passed to curl::handle_setopt.} } \description{ Constructs and executes API calls to the REDCap API. These @@ -41,7 +41,7 @@ options to the API that require an array need to be built using \code{vectorToApiBodyList}; options that are not an array can be entered directly (see examples). -The config list is a list of parameters to pass to \code{\link[httr:POST]{httr::POST()}}. +The config list is a list of parameters to pass to \link[curl:handle]{curl::handle_setopt}. Refer to documentation there for details. Using the settings stored in the \code{redcapConnection} object, a response diff --git a/man/redcapConnection.Rd b/man/redcapConnection.Rd index 88bbb864..4dc3c6b2 100644 --- a/man/redcapConnection.Rd +++ b/man/redcapConnection.Rd @@ -46,7 +46,7 @@ offlineConnection( \item{token}{\code{character(1)} REDCap API token} -\item{config}{A list to be passed to \code{\link[httr:POST]{httr::POST()}}. This allows the +\item{config}{A list to be passed to \link[curl:handle]{curl::handle_setopt}. This allows the user to set additional configurations for the API calls, such as certificates, SSL version, etc. For the majority of users, this does not need to be altered.} @@ -190,7 +190,7 @@ Tokens are specific to a project, and a token must be created for each project for which the user wishes to use the API. Additional Curl option can be set in the \code{config} argument. See the documentation -for \code{\link[httr:config]{httr::config()}} and \code{\link[httr:httr_options]{httr::httr_options()}} for more Curl options. +for \link[curl:handle]{curl::handle_setopt} for more curl options. } \subsection{Specific to Offline Connections}{ diff --git a/vignettes/precompiled-best-practices.pdf b/vignettes/precompiled-best-practices.pdf index cb5652399387a818967a31df491e04b24093a732..fb1278102832009fc3ffef365481cf0ce1b8795a 100644 GIT binary patch delta 101931 zcmZsiLwJ~h)~#dPHXEz4oiu7}+jhRNF&o>qZQE&V+fME|=T86Gn(xW`uJ!DUR*cjF z3{*-*F$o41Mh-a2*~OuMaBQ6Ms2ItFpg(|1Jl((R>^EIK{q|gJgH1N8$)4vS9lr(E z3J^_k41|tP(3D1=M(+qmYRrq02#@jl5p`-pyzUI7=T`i#tvDZ+^-lPGF}|jrOpc?LAM$XJZydWtFkw2>z&T#df1r1ac}&=S&?r;=EGlFa6_D@0_hixx4_5 z4^wJY&rs10q|wr9I~Y| z6%qCh6^W81I8c0&y^`-E#A!wk$Oc zoru>8BnR;KUQ;x|)TzJB1ilv8J^U{@Uwq7BLh%9dUBt%}l;H|blA`u@uPowsKI>!s zC?|3iZL9yE3$nr+4ud)2t%#rIT$96#;!Qi{YVMF|1a+H}x z%%9lU%U&N)##}ebslkvf>DJ^G94@f_@~4v1-=Qcu7tsO&#x^Fk_NTSQvMd~u@%3I7Y7l9=@&EG@6Kc{ zoL;3@@MV;(CEe*97OLW7SxiSIhBf=3miUxawRaqzSeU`?>~k{)8|DJeZ|I%fMPR@z+c5zdC~YCLQgHFFb=SX!pg5AIeCZ8hlx zzh!m9Y34k97jC|lb%T!HnouzR%^_K$m{`>iy99^7tvb(jOglw&_-=m#@Tu{$t+l9W z_qrq}gntS`q-Q3+O#T5BcxVu7@T%7YB0jV1ZKX1bUFzfA#a`z|m$*-lp>|!*^B0_- z*EGYLo0bD5#t!TckVSH|L9g=6p(x>)_Zi3e4PF|!NGSYLU!DNT6W;K+fg2*#=14gP z_*psjG{x6yQz~vNiDg0>#{IKEOKOw+{`b88g=$XX;bNU-ID8<-*|v)Nai)+aYoeo3 zGZ2cLAXK<$E9?BUiuSY3|x(O)NK)YWqWZ)9ZJ?q?U|Cg$~p#nr8M8`@RCHw)P( zCd5^SmL);4zzCoZH?pdOe0Ni6)pYizg8*?r@s%UcgOcz?Nks^a4-D6xG}sz1d^b%U zq4B&jeZwS*iUDDxgiadzVe>2%cx5rwVAG5n73wneu!ql8`*jJ29x~6;nomdbqvKj9 zatcMqO$_<32m=9KD1mb%Vy=k&r;g61k<4MNs+n%W- z)J40o9KT$2c6MfX_dQGrBf zNpY|6UHDe1?UhNeT>>QAN8p364BwC&3A&mYW7Z_b%KG+&12@)f)xph3@8BgU-|yEm zbB;B>b4_bzF(6Z^P+*fxT%{fvABK)Rkh#d>k%xcO?LkgG`Amnl;63e1%;os6OV2z? zC#HJY3;|KYYTErKPc>GIqwdS8U|}R#krz~^NWO&BGh+L;Cb(Kmojg^}yOECtw8@ro zy2f*xuo7G;vjSeq+8}#eo0QuSw}sURo*j~w{K}>b-%~RU-N=|Vo15A+CdoV=AI>Y3 zoiSD3Ez;2Mv*k~3hV?D<)hdRwc@Tfs1!0`%UZ9x5z`%}SgU)|kMZckPM$bHa+wE+8 z>#TSPw1d`1RbABs%_ZVDn3D}7o=ufnLP`}W1NgrzA&exsw=^`sWoDlM>G^L#lU?U@6JHb|Ft8Hijk=x)Wor**<;9oZ zIDSk5-qr9*u{~*96%ALcsiRyE=UbwZ0Fdlm3*klZ%m6{}n2N42q*GK6lMh6Jv%!9J zvnK2rx5?UFCS`8hGOz}5hp(UY7+UT*KkB1BMHe_WI=nK%E#D(wwmpB3%z4vm>1YS-zL)Z)P0hrFp9oxz|@1=5__cK$bdxKW=%c8uwIIaAaDQTDiD17uY028OoqY z=z%eJjW1+q^VFXtvYwfY>`tDcYSh(uhQ4~kt#kJji;aZYio9uw7wjBr8I47!S*FrS z9-YN1$}?OfUd#OWSJv4_G)Pf;9>kI{d%-H0%hJ} z-naU!53%9r{5ceP-M>Tsd@n|2zLL?d9u6gylkwOw=Yjs9ZBDtZ5ZZVHJu?4Xt$zF zi;9KeV$}~~C#?1=3L+p9gaIM%NHbn|kn`6gc~*9}Y$CaaPu*v0W|E(IoDUJ5=e9%M zc%MQQbbwYKZ*P7vx8Gsao;Gp0p=_6TP-1nBR(68l8T6N=7=(Pxpk{(e_b9nnKL?p4 z71+O;wX!QA;$RR+i~MT_G%#Km(JM;|5I?mIq^HCzqUI}}K4UseoR`6_S1C`|h0f*0#{ zt@+-T_aX-&#G|-b`-3Tl^4bC2vHHp4e%YZDh>;!D$lf0PWANhX?_^rppq=rfI55FJ zFeX#rLg{CS;dwnQ`ALV&|4IoRHSH(~jz^$=Vu_k^;$RJ6GF*cDIx{L8j3&63ZgwxT za{?;7{5?=SpLxU&)yJ>N2S(xbGZ2U~tkqPPt;C4xqL!2UCl5isaRPsq z+lfz{w*!RB;n*qoqf7Z=0*q|0*}0nw4PV5Tdt6-?^8QSc+5fKEm1%*RkIl_;vBo*t z(g+d?FfFNBS0g<@4WkG`t5fNxkaB9O_!^Lf_73!XZ5`162~H>%_c`7LHmRkcJCyR| z7R_;MD8JI{%FABZCcJpzq?$WbUIF->SJ%8m2|v1bj*d!%B`@Nzi%yb%iDW|iB~n%* z(WA+7(41ZJc0mu*o<=?(xTqAIiR$An;6$cb(yQD@S@x(dlcuMM7=X+2PMOD}a-cLn zc6rvC=DP<(RUo4K${7YGzQ{jcY3(O8ZW8(iFjk)pq`U63-|xra_VUBA2LNn0Ya09m zaYA2sF@|oo(tUFo{@ky&s@t(^M533^OE+GfjuXM^zrO=4>f&Nys6rf}ZX@cnU(h~l zP2R_-e*GRiI9vA;i_g&z%3(l5ZhMfYtjP>n+QL2FFKN9|LVKzagEq#qGUK&Vz z{+TfQFZq(bVYM&&Tkk-j{w3$^RhUx=G3I|HR95pmS zj$vyl9lXf$HK?2F-MJXT;$nm6;XLV)kdsk;mIo+!7f7Nwwy5Wr~z7H9lgu8LiI~MGux*L;}Aj(;# zv#Kb{LJj&o$runzr>)3O{;HwJ#Nfz$cvt?5gE%3oZHG^tO9nb#2o$G=(?V1+)OSem zsH0T8-wtr1@>=tYDVJXH163R#sJn8GpQPfZ2U|NW8(sSxTWMFG$l%ZgQRiQsj#8WP z)sn*pDAl@USv(Mb8yL&0ErT0f*Ve$PYVTWiQJVkF%#J1)-aVq!7ZCZv1i9QAUFje} zx_Zb1_w+=r`v3@OT5De34`qowddjR2;fG$u5&EXC%RD2C@p*9+jL!7~EPIQty4a2~ z8-8wS?kK2}Bm~%kU(;0_+;M-01mq02nXZ~kZd~9PF^w$fe?8C*xINw@*K~Ik$M)!a zJ)E5zj|5?kir+1sx)Gt?Z17!*P@s|ZB)zaK|6(Q}1^@-Tx8K7#Ub~0uoY&tUXDeU- zq~mWIXg*8^HCjzCMp*Uxt1`UznW$(*Y?+6z8!3LJ1`|4vi=BR_jM#=6Zuj`y?#Y^j zPqbVEZEv^d*jD;o9*M{Tk%|v`X?eyyURPSzq~w9mdB*CLEy*=1nfk zE!AKVs5s(q+|Kfp+8PF_7yhQ90)F4~ei$Lg8ey7ZI*It76+{MUc)!^M@Uug%QI^OX z$9ysfvi4uaEHkK-g>E|siBMr-q@iy1dvFB*)_^9q0TBJ2V}Wx86wrbzlGx-GM)r;U zmz1^}$bX}UdWl(?0~0W!QejQF@pA~?sK!k9Ty^6}FjcI#;uODd%;h=-wACQFn{HeSqG{`x*=MBRP*Z5{@FY0RD^VEbF zbqlx!NHHegk+RiI+Goch#~qn8?MqMf#6WI*l0{CkMDCwN!)hKuEbOhdvLO!fhI5RD zKZ6iOXWywYJ26vv9-P9Rb`~K!$)K69pdVXM5%KyKE1+Vv(ydW|f4AycYrCB~2HmD*P%i2b~1h7l2{+c4Firb!@CM`0{lj zZcFyV$H2mdBN4{@C1ydBajB4tH0;6~MuxUX6OsLAT%k3I9 zf830l+4A@jDUZk{+*a?NpP$3<59lpt=DN{;ZNb+%%=sSUMQA-Gf3|6jcSk>?4%k!c z&1gf|1E&5$Y{|LG5=uCPz6!$$RJ8#?(xwV~e?9+=lc8kn<5_bX4g^RDo#sBA%u7RU z+kCKGsC2s5vQdGl>2g=SOPzzE^*fBO@c16Nz`Yn9^?7CVRmZV@>p{<=NxL z)_9PJ=2$A@P6K0rZ03e)u5@IE3?KS^Rv>)*?7x@B66uLchFQ_W-=pH%qJl8WPgM5O z9gdO#t{)6LIZ_uei65+-jn@f0{r%Fw8n9^HF#g4}?)(rLb#96a#{>Ds!j>IKnsP>| zH0hM#FmQN~+I9yS9dkgi-^L*K>;u)EWafvD_=jwKwO>eZ>mfb#S2F6b%%*ca1e7fn z#PI1g6vDG~FzjslJ;w7@xK%lff52|-kbtD?o%1E zvWr`Pfe|A--W|;_ID{GihR$_75FE*lgihCzZpK#{R&44+a^|W!Zgc`a_R7nqqn3}^ zpQ*}nMrS<4v)_~wG*kNj&^Kf{y8JM|*uzR0-^U<+apF`(yeQi25t?q8wYKe^(YhQR z_~Fm{($+zQQt)i&YPnHMP8kUQhnN`(A%{VS<_E$d1X*m2LuP_p`VlRyo9p2VslfT&OG%vGX`oCq?UuV>t8U0yWqV}!xVOM9$L zsV+Mu==uv2ZBtw3OXf#L{`tl4qw_TZk95COQ)l%VNVPw~ET5Krm>&aWZZWi0XfEI< zoiE#VW@YQI0O%|Rz}lu{)%K?0G}c91l92Vt{d$)$6xfL>5dBp_q05bIp}bzspTtzl zXQ%!g^mx9jn(~P%9&CeIPw+_o$q)7_9hd!UH_DcGnKD|g8G#Dq05rF04OSwGagc$T z-M_e#qw|`|CMLv<$uVB$9XTO68EyKO`8hUeF$w;H@F4{PcyWSOej;9wu-xggw0L?E z-0g)8`#tUSF|YCv%O98B6F{~na~Sndv)wt=v#+Z+pRc7rl?72|=`MLv9y1o}%nH3&kGIMGFLLsz@l2q!6W$T;B!4C~hAQ7hxadp$uQeuaWx zJV;t*vp*PXj}}5qi7o>R@W1u%#_TsSv z6Dxsj-HSlU?CAssg>)ZoG!i|mj+yQqw}BxqRK{*T*w@$NiNDACgS+`C;&?@o6BXh# z5d;Du@NJ`oQs_RxWKj)6hiHMi@0ZQ-6Kl+uJb(f818$kDx- zQ`;vtAg#S*>o=#|#C1yvbJbQslxtg>(>|6|h;of@w2b`RX0y{GO~; zqyKg2+*M#IM5Y9V*0!HjQI#ibYwSTzkZTEmo=+oQFccq8E0dDPg11QiMDzYLwb(!| zn#sQSxKOLNf~k}WsZAib=-Wh|*DfDhMDS1auU$oZvArO&YPfTCmdDP*eBDywWwJR_ zsGTVuyzNLP*-PifgclmD75r&~X_7Q+CK(a3_tuO%406!@3SwS0ORa~XWhMqkjDhYMk%p1HFLTk#o1pgDhg ztlikPc6Xqp*LzV^<%N|i{vJk87Mi5swR17%>$(C!?-WoC7;5-U&{l&Qb>j|Um4t~ysbuc=tp<24-Wn?NPn zQKv_A`yjg#j>PDM=oxSWf16#zwmHl5G_|udh5y;0sj2s#0Xqu^Mu7lzSH;O8593E} z1QjE;sziJF3v_j+v54s zzSnIk8}iH^ZB-7kEFkA4{P-PTc#HF+Z-X87%xcwgWG+#M zm)={sDpT<{oWV{V%VSIxm#Yq9wEO3*kvp<|5TW@U=R)GOQOHEU5U?ahk zxFIUJBCeP6e<84k30Mr`!7`Ld;F#2f{^gKZ*iKj*c*54L`&K|QN1L8WHfZIKHzt?q zrRk|Rbs;+#1jq!tTLbpq_klm-P`2dh&-~zg{ON>vGTfy_nCg{I@cza0Gm_XXd{kYQ zb6C*#aw-P|iS%s&9k6QIZQVNWu~xfSK!UR8J?JK#3)-1M;eX0k!;pbotN9)a;xVlhn&q=CIaMkfBn z=1&fEDEjc5Of(V4{Q>h6raEEbL#1yAiJQRP`jW!ZjHDn zhkh%V(ZX9Z99j`DdAOlu#=u$zQdUi%e_j(4|E2$P`${&xW28yX)6mNEI-(r@@C^lnD+)j~>-tAK z|25;UdCdW9T~erm1wqerBBHIQ-kRaAzMY4D`XLYMQpYLeafnNLe8n?(Gg8J)ahQoM zkn$TN;#3$x_{6wph0u%n9mUX-ekX#5@?xx!#y=U*Kar+?g=0jdtT*mYh(){ZLvMw+ ztqvs5l&phk2yFg3K(7@><+5q`BOB=mNEp166(2AA=V)kJHF6erT$U4w(yr8X-v2ay zi&ezHa)4C%a+!%~t)=bQ7>lj`3s;u^tUK&U#if%ElDSHN;UQDT3J|z={6Q%!pdnVv zojV2kPKd>-Qg))_X&u_YTY{&6Huwdbz1^R@VO8&ACa%DhFX*mO8qJ=C&IMuPu2s%s z7bE9%qmi>Du?`Jf{puZ_g{_!S z%M?M-3>@dH_UpLP%ckR^lns8kK32+buWO*dtC^vRV`N#DJicfwl#F>sEPWGwo%d$X z0a6%OEZoSw;GB(TcUGnAQ?8Y))f*0WB?DYNIQREh&1HlUWXgW+3rq(*_U;=tTicc} zVMD7Aol|k178&m1s2I{MP1nAD+r!i4G&?r7zF=sG*h5CIc%o1teSxUXLD}f;?+?Iw zAM8Rdvo^hnH-bYD2K$;2w)e%_ITR@F)C}ZinL1lom4CnPr1)whCqY6aO)j7`=a&qG zzi#Ww^1Pi@q6jmMvP{kAR9Cg7qET;EkKzk8*p6pDH$*Gugo(4mi2jpA`a!rAc2l(H zA=J6$%5cT;jHnQPDIti|t}M0Y)(M>W$zyN2*BRI~3-VOsZ;HRp7Aq^<5Hx?=j$fL-3Iin zJs(Z9>z=)tI^U0we}in#Xo?wON=C3b32K=y5p;n{#&bjp(< z<>eUs#kh?R7Wv5%Z6k%XaTA!#)adJC64&KOl^kJGAEC-mLQV2QYREKlp+-5FI+^~zIW(EGDX*}JV2*`(q0SbWW**aN_;qw z7V73_6K3q)XipL8;&)nyv?CO6=^TZv26ZyqQg$UAoH{IE@o`%=ai1N;+wI3+8i$;P zoh3}fh0gwL#g|sH#SR@@p8|TS2V<+q-_DE0qP;LGI$p+CQj@`|mDcmv-M!DzZqkq* zZ1!^84&_J^D!)dp6;{r0kazU5#iPJtX_?~sE!jyOD%CVSJ(||*j!acB=?mlfHZ!`~ zxqSZ|>or0G6Q*~l$~GD*1FOdoBLScBeQR0mhE<(7$;%&6$tF3;&N7-SI+O#0qSTJ7 zm(e!Gmm|R~%EL-5ND;;+31RdZs|jrViwZ%9DmyS-&9U6;Bm6gsGj`=|PgKTluC3Rq9z5ZSUO^9moctD5|c^l z-Pw&kc%o&E2~8t?DhQ^`Y9^|^&>E88GTVHagMqWKWFf1?jBG{rI`go)aR_>fN8w)M zh?E)C8RgI1E!`y)pQ(ZMnfdKba-l{RUEL?4s!P8M9=LyO4BdFh#SUZY8lXkV`wTN= zYek0u=E~|s)UP5EDE)QCdFy;LznwDM3T(tm$7y*bN|b2iZFYmBs2q~;eENgjM!>^; zi(7i>U0Bz1tPy+W4qLDjwaf~C_klMe3upZj!*LFubJHJr@wb=n|0QPma~-gKyEX`t zq)|X~n9*d(c=fLF!8G6F&f+esK0r2JHo&6*g4<|BpceEFG(dW_qK9m<>KY1x330F( z-MuhO2Ax`|3cZWgh`RQ6@78MA3Wxo|)G0U8{gS)gbgDAeJd*Mp`HScVf2AK|1Y(vL zI);YXHCw$%>c*htGL?JG4RcO<czrbk0w4xM?Lv2<8mHlg!(_KQ!y6}V3h zO}9{^MNi4)VPLpNj=?q)TF3m=RZp+{R=I!>0wyX!f;-j3;mf4VN_cVRF9~jDf3mFs zSInNXPdR7n?@=pA5t&~J6UD!}V5 z&;&8z`56n8OKT5#3mjjjU*}p|0C4o?qsh8|erurQuB~_~t5Zg6cln-^faW+afk$1Y zPf@oTBtx>If~w&LY7%f8s13XpTTeGF3$~twr72r0c5?RrZ#C< zp6eNOVl;T5x+7hpA_@}y(fws%uBsb8qHHs<;(IR(zPXaR{g(`5bRyo|b2{56YDtwl z^^Qz)DB8xiLa|<$<8i)qo6flkp{CQ$9ZG_Io7Q0d4k{F4_!3V1y)B# zQCXg$S8Jzg=2OZ)%Ir#wK6r1kdF;dAI2w13!JHWDxZ4@{@W^~t0JekObE0)c{A2Ujm}tA5wOlwKj!IaXU`7wqlhkHcw&?WRrEmXUho zv9?bm3&>l%xAz?>=*f#I?mLY1RD!S2aY>XaOF|*iVcYi?fCI41j-j#t}W?*K#?*FUIB#;$r5NvP@ zYL8$ud@2c?_|CnR+TRq>HREkuOo)p1-cEJ$HG$^|>@u^k)ye*yy~^Oeg0VS)@zO2z z#HS8ZcyqTCK!QvdS_ot5fTr{sQ#JA!+tLkEX*cydHpXKw6LBBy#w>ImJzUm?1RKjh zjOP7r;!OOJhat%k=|C3CF_^gBp_vY?w|2Gh+48#g4sS+V+_6EvX6aT>75vZ;-(_kN9q;La}z<$l3GL@?V97&G8$I2-!PrYNB3x8>3ZiGX5 zQ@?-`8E=nh?*cjP;#PcXX=Vf1ek_auf_6Pe27I9i2qDbO5m@3rw@>0pQV^kJy3oR4 z>FxSaPwc>3x^ChQ5wJIEC+1(>q+Qg871;7EcCGzTZNH4d+GJsvVIEv3it^tUq*6H9 z3EXi2XfzIcQX!u`z`eaZawkwiq-KqD$3qOZDrAnb565U}WXUd5bN& zAXseZK)0>P=}SLiA>vk-y=F-PI;y{S=Go&GVXnhINrlvjW&)p8=K`tVU5CY#V z6)NqqU<%2G08rZkA%KI*c3~ccGEskLj=dYG%$wrMWobgGCDl$9$}%sWiep)am3n(4 zE7JM(VU=HgmP{4VIq4}Cj{-&bQ?Xq5myoCdbAY5;XQ%vQE$Ds!lbpBWrL49vxs-r2 zl|;Ai=ehIh9^zr{DJr#}Q*R<>0jcckFo#%YpeRd*gVwN7W$2ywBg;DHC!`ya%3&V> z(RcJytCI#zc(DNT?U8@|T`oSMl(d00o4yZwk8I4l{ezIx$xM>(*0E}y^~j7au^m1iodEu58$JQP{7RsK;wMsp;0Zd-7?p!NnuT?WVdLKtxVOI6#; zXSVqB4Ofr3SO=wj5-L}%dQD?F@zr%GX299_L{dVlz)|MDvVctlk4z>6a^k;P*uOKX{Jcj6Zea)6v$QF?1EM9@KFB%CV5;fB? zr1gY-L%zm&sw&jw#F2jy2P=|o#^A}PE{~OU?E-{Mhy{z@p`RRW#+>m@g7<>z-{DtM zoUz85zj0Q6b>c>19;EpS;bt2ET(UStpTgE@LY+u2#VlKQK~oVF8YL8bhv_CO3;53r zHV)(vn8V{lnXJME0y6-GJtc3+`Gqkp^i z{J=eLbI8*cusTB+d81i*r8<$X|M{TWemI#`(+uV+xg%M>PK|!~NY;x6&?xkUK3uwu zWBP&B2WQ8T3c7w+MNy+mdxAiJWCeOK!NqFNwjWOSHQ8bq>? znhVoaWp%?WZ7P9`;`TXQ;X~)kU%Q4wFhKv3CP2(MYS1_pq8GkW`YsW?B*ya zBFbynysrG^8f>x`sbFaC(>A;y)e0erP%=?3N~T|}Qo!;e{o4T8i#kaRP*T9lYGA21v#8c!TCHKJYBpY(*gQPk+@NhJE{7qa; zZCLovi8(8*uQgd)SQwY~i*wU;<2Rvd7%4}$mG zL`iJmn`*#y)yk?#w+jmQyF+2gRdxGr*u~X2yW(reTH2@8#kC zU4ht~m~rddh29EMC*hr@mSXKF)iZ`uZ-MMyXaiV3`;i~FjYP6F z{e83N$#?^+xdX_&v36`F0_P(AGvP$W(EYoW%z_hOSb?JId zKoHYkgk%T@Lnp2!MVe|2@x^5O0nr{aE9$b{S(2RV zX=k2O5Z&^GG1m9JYttDZyO;+>AEbSIXc+M#w;8K#;MM+j1EUU z&(u04;G}Df9cm_&E+#Wk!pPlzgfd<^ss>w8Dy^s z>e7HWS~|suQFJYfQ%k_;{>OnRQIT*I!M(EhNHJS%^1RPr`gm2YH_}ERW@G@vY%@eM zLMF%sW(XMM&?cFDH9@ufhCk2fV`E)AFMaWPHcNdJ&O^n0` zih)^#>$%rdHDL3SSR!~#C)7*p>*zUDLg`}Q>wlj3m`+&2#Te09q|+YHm!9-cR-?09 z=x?vRGGNq*;$%`kk@ES2QLw|$@>m%MxUvB&?T)C0YO9hAsuJZOf<^#~TBQvbahds- zUw*}|eHw_W$ejGy?+cMASz@QBYnb~YH4mxMDy)H4zYfGx{BV+%&9Uv`)H|KY%8=dw9SU@0*cli;>5lWy-k@A##J{lUEP`T<$i>q( z3GdgQ+X9?9yev-krqpG!6cqe;9e?4Q_op~vn3Tmi3^S@x|0C`{OA!I5=IGCalrFd=Bmsc+k1=4oMvNK?u4_7jHtU5B*x|aq=_Y=e@U%;rtV+ z+|FyAM6!hW2Ux3yaB@5@FF&^Z)hY@tss>{{&v&git=C|)(8>Hs{mC{Y5vzcV5E%hp z>`**iTsEG6*LNR>K55I{<>&kLt7*R7WK!9klbLOfYV+cd_P3E{Mo9K1aBwJbuk-1t z%em=rbfZhMWz}2*wJ(k4uULTXsyvBM2u<)5|2*Q(^yOoJ()%8`P~b0RQTc`_gvbC=l)Fn3km+Ejn(P5g!gQ+A~JFv#f%#IPE*AJBi^{vD960+sgn z_V36-IMuJ<90&#SbTp*4)%_DHIdQ7LzU_wRJ)LXakG<6KqpW@eN#83z(W*UF&#|d? z1&{hB)*%u^2G;M3JQS7_9v)M8ac;6JF}TCv6>=BkX;*f>i6#`vK(BwbJ1u50rL+Pn z3p+1;S`1r@D)-KcH$-cJs>CdP?ic+H?KhY6I`kRof4)c9!{_sTgS&2pi3EjW^z+^Y zLbW4TWLw*P*sAL8nSZ=u$(WLO4<^3qq#&tLf>=vXf_fCE3CDN-OXL=mv@!hSp2*Z2 zwcJ|Unm^rAlgpXd1*EwtTZDlh)dsL{5Bzo`P7u!EU!)7+lcI$55wA#1Jpe5F&qbo`pGD1<8v z^C8(K!Kyn55?qV-KRXaaM|3v%8xW2T#?1O3YQg~f`TwD53U}RZzx9z{pVUCR5}X3> zH-;;2BV=(0TaaadIDRWlL^Cr^cyn7pq-4I+>pRgM0Z;P&tqC=gZgfbJKCbVW{7=&FTN9m-;y=t_96hHd(5g?>(vHMQX#Eesu*z3$m&&ixN3i?G zgsfUFd42IHGJ;Hcq=^`Ji8#)Emdc?AO|3RH8-9BAKCcVAE-kxcs4m$5 z3dsoiVoeiXp=(`PJTBZ-xX>x#wrLfo!Xejd0DA_ewa=Sq2G5lWw*$z$%~n^O;=7PS zIDI*yo9)#N-sM&T>rn4gq+_?x+snEThwYOHCkL$99v1AD%G73>``846jC}?^vMCQ3 zu?M~4S#>%mKWfBDyTQeu{u2&Gx{1V}crdm;1WeS+&%Mq?zwwVIB0nIpcwFhc&4RIa zWB`2^+3pjypB=7!duU`55+gH)=)RXHNBiy~UHW=HZ9BaKC0IE)e5}s2U@T+(7=}i zXKU7%`Xy1)koEL|#|7fGdhtLBqJ`kszVgMx%~6m6w39!IsRU@!J(ny=t_Lc%X`_vB zu6x{cb2cF;Km3E}kcd0pKLv)XN9*UwFeDq7HzMq5eV0S!yq-DU8=u>XC!2vkxVL*m z7+w_O?klZq7QB3VSf^xARmF#UIe_-&u5{HkBO#ky5BQ-DD%ktJ6pR3!`-jx~Oj_gB z%hu<^fcd0bE-WfL=?^{TC{p_Cpmi(*{a0CRl1}OvR7(5xmVDZ=jJ2$ z*cS3jRMUSu`u**jG3OHRk1?t%AxDaKa!rgY#*GE^Fb9H2`hqjGLUo zC7vHPE0MNUV0Ftb>A2Z{_@F`kDXa#LSWaQYqRQy@%09h$BC0>a#Pnz~V_UBvcysbsxCiw6YRX zD5Umu3)j-;{YrF(V0`PA|9!(com-!o3(J<#jPm)P>OVnL6Vv%63orK-I!5~aId#k6 zP=~l+sH|(`_|l|b1*Yw6HnBd6TS4^SnKGNZ@s1U<1{>cVTd{`p4H-boLmzl2}X5gcvn$whlOSue$Ph- z8r%Fez$o{6C!taIyeS=zxHZZsQn}tB(m<>S_l}TAdIO>Q;#skTU_aHmNgw zt5`(7Wot)bTo^vz5Pcuk7-n|~g#Ik=Of^_Ko`P85j8c%P^&UW6u$k0AFp;(_mi!X^ z?D<8r0t>@KW!8q2{yvq9c}9A>YT#eE`kr5310qecTI;}3s7BQ+f_PkZ(gUkj zNm1bQ;qQGPabgjWEK@ko>F%r{-9$C^gkiV!{qc8gcWni>JYk}DmHo}D*4!$mD`tV@ zp-oyV*uOH9Oc1C*EV_zr)|;ag!q=+G^DtIPEHTb9uXc@dUOX2*zo!kvri`MOG%)!@ zLm+%hb7HxgJxkIQoKFd?8L~j?^5l_}j=7bb?vAfdK;T(7Lb9Q+cd)N@NXgTr)oF>q z=NEt+FpmUfUY!-pJrr%LR_P74)q;JTPVzY9>47-!tplbE=;dVYbV07Wo(pD#SW9mS z2c}zV=*TFWcUHM$n_Jap$KY)KA6e%RrAf4O?Xqp#w(Y7eqsz8!yk*WW&-j{J=T^NYG3$(1*PW zNU?(^9~f3VNHvb;K6o{D(AhlD3fq7WQOi8BlUmh?o)erRJ2~U)U2L)Ycs7?JkSBkZ z)OTM_K*RxF-fJ-|=`R9I@R-_nL&)wuA$jae$G7&Svda7q6vg2}K47QKu-DxR@ar^| zLlmv5>#dTUGVJ0XCpSXc2}rdKBu{6k_@zHV*f+gsuk@7*HVf%n!f!x#1-GGl}fgWa>^)Z3O$8=U{ zPqRy(4*UsBDtU01x_>p&o^3WS!mErZ{%*#6hIO%rh$Z$baxs}RTL8v1q6bK<_=CbbYNBpgFh;lkeP}#N}n&}A230V2^BY;YhJWVl! zLLA$EDNK!uf!I^z0NORI-=bBrQ(CxZ!^a;|-=QMmjOqn`W`v10G<$2_Bmz6wtzt_% ztilCGt^k^qlHdNmoBZkgAC#7dPVSBkSWM9Iad7TJB+Q&Jj4q&~DlhYWFRj1R$kU1$ zfaom`xI{eFSKnK)EqaM=n+(ms4X5(1lnYh89EGdP+>pu=Z5PROrvRlh;N+w(G<^g$ ztRM~JuNnO^hlW=2ET8^5-$QKTW*$>ty0*DJ5i6=#MA@yjua~u}$wyjpXT(wo&w(tB_ik(!4!zc`%Hi)& zRD3OC4=2Pi!*$@ zd&?U5b1rbwUsI6VhF>n z1<_)6Hdzl^C$>3WC^oIQ?5JW#dlATor*M3bQbA*axkYH1O#oW2nLq)67Dd7??la@X zFPQ+RNn&o3kWQ6wR>Fz8oi=(2%02y=!>b{DqjrPgM(OY|sWpNW8>=^P&~6zyAY;sf zQ6z|Sl(1<8FGF|ZCUc%66=HqoMpAogxR?3%XD1DT^ zVBT0w8jr${Hpt3L7AtKl(TX5nD}4 za)|~%t||TYD`*|K#ILLyy;@ac@F_?7P>ErsKY)WH51L#8r%b_4L;zIJ-Df;PR0DP~ zZ&SR%nuL)>z3FJ7t|DPHsHxHqIGpcBdn5y~r#cUh{tfvxAeGC~o!*v@bg4$fP!s}) zPhHYu$@tly!CWXENPKA}**!%(q0(>SkTse{ejsPz^C4U=HRp`^_q&N;AnuOwh4sYwv52h0$|yqurl?ltBGSDLu?ak#UOA z0%JzE`ho*k!E~aP12d>t&y?0aKI5oSRpx{3E0obB8+>ldznFR=9yH3zhQj3M7AQhP zi(SInIri-d#u#O@R2-Ts1`o0vK_)1by~hRsku}et^NWi)JSV=2iqWQ49s z1-pk9+Fc&&{??&iQsy%hdE}-)zgFJDr#Gj7$C0LvYU$I%S$7<9nVf@gYjTpMiPtDO za*}o2`?WoHCPmY{a-RYQ#6JagV=O)tj++aBN+olGX-l_Mh5}6cJB!4vz>ylQkCi>h zKAWaU;s_1CB0H(F=~N()FXJns%U5s|JE{)_`Vlv&;tFMVxnAO?5ZVmJc2c{En{K&* z*-%2Y6Q;%GfXDSJ&PtpV?Upmo4!bVBQTr;r5%ka5m^ysCw1G+GjEQCl8m7M9K05)3 zidogsJizWFXkl(>Uk6_(Gb^=XJZ@U1-yu{~M3>gNLEzWzX$3Fmm})x00(%jfT`euX zD}$DhVIsDVhspv*FRDTBFI|U zQ}O~Wwk8Bjjmp6~9T8mcf_*9ky%zz{m;YkT11(@!-N?KBi46ZN!*6&0GAzD<8fmdh zxRpk5#@Dfd^CUgIZ!g{Br-OqMm)gk(w%h$3JoJ~4O5${*h&uI|FfyLj*hT@D8b>@j zM?=VJG-<(GsjogN^zfrvpO$O;c0-wo2t!;mXN=y763abOniguH`lp(XC`?eDdz%qR^;&ws@PnJ2vnJ zbB!8N1>3DCO+i71BO;d4J>@FEusOCkuA1w9=lV5@Ko0yUVTeR-Q@W`R>#tIeOB<*g z^VluEM4T!Txgt)y)77OADE$w&84E0a15pIH_`zOW(lL`r!IE181URVZ6N}*>L6zzE zeYo?v5`1JxKUgY6PaSpDA5)4&?;*W{HBk&dSpGH||NH$GR1wqPvpKJbd zvGc^kaD>C2iN^`12b*QU)S?C3s2VZ#E6-nUOYj@ZIA|6cRgAj=DXYil+XD-X4u2Z| zDUWGz3cPb^n(5Tfv9w`Ts7<$@{ICXDx!=1-)olByGSA@4F`G9{LP;sGiT>OVQOFHX zR-t!1sH_)?%mmno=0!XE=6TnB%Z6raD>z|J%&$j0D0E=(_UxN~>NoP$EjDGgnRM=#-x zfFR7~ds~&oO`WJEY{j;27KP$5R-bzm2*Q{SO?_tLZ z!vpcR!fX7nT1n<}1<uwpqnz>KEc8b!j>S5V+no!GZyO#@HmyI{wd0~OAu+B6gLkhesxLB5 z2OWuB2k!DK9P`Q@no1t`1`1%6Q}1Z5;&Lcy0~N<#HUnKU%v;@%lo-gLqPb_xD>{`F z{%VY$t;Wu9Lq&DF2|G$}+|YG{ycbA|586u=OcrJx3P26IL%?9J&(h7JF$gc5|2#7817JJGOkb;+Uh=NmeJ40KGf&+%&~ZNJ!Zx zdu(0%^i zSQ)MLPK`9cV8NWdHcK8W0t~B~>7bV&M#U3FYexk0$kD@431PZ&=|jXCC+MX+ae*)Z zL%L_v!#D^C7P+kCQw_7J_UmOibI*;bX&uuySThJMyNqMvJxA8%b!_#>&X55ESdO5N zNTi>t-rsY~x3(lR`Uh`$U0Z<;8LrZYRp(P(Y2Vpf9GeHohA-@u0Dk#-11&7A@h>&M z*q808a97rNtI*Qf5BT|YyA16z$Q!1oBdnEX?HewSP2_f;Pn7~p#Q>IKR@{(q5r6YL zmQW?I5TRf-JR04(!F6b5MPfi8c7l1}^JKGKPHkw%Y-VqD7^*sqYsa#Bs(qr8CSt}?MAeUZ9>_|r6)R<2-Q1J1oC?SqSJ^5 ziYHXl1_chya0!D?!YyTYN(BR0+dZI*4DjR`8IWxl$M3UHaGenOJY0ycXF3+dTtm0!4H&wnFggbkXx5G za^B?Ow&bI?rM4L`ZxRkzqP5$p5spf)TkB?HIK}l+MviAs9ie3@qLwDc{XTL?49aD> zanaw7N0TzZ-v6j1;7Xp)Cff>?Zc9b*6VdENeIR=h0uVi&2bs6Tc4>ySrbtEX8Q9Il zIOn|+%`8n5_uvMupcy;+kofYI4G|8kOOAHpxptV)L0PCb~w>#S^-57ax3J#Y|-%4(Y`gk#gD-be& z4={ZrDhhz~!C%pau$%w*RuiIxqQ~*AVoDCbKO$cVLRB*o5Ur-gY5Z_$=x;k$GZKQV zV)hYS)yZOHSIc8CiNIpvfFd-{|A5tL;{h4>fl9E*!T$G}VPX2uHN(Zt`9A>zYr|=a z<9-I$vcUpm|HAUJc!v2xlxN1`{jeP;Ggxd^u~;NfKN|5~(>WqZ5D+BT$OIQpQdx z44N`pBhE>)eA~hh%UzAfu$AU=Quq>dEkYDQe)Egt*HvxF8lynM<;L~?4e;fu)-;UK znCbn4NLWWfN-YA?Z3xIcY1A769mk>;-seLF&-26;6R-opP#$Br1(>HTN>)S8G=k49 z6eorHDa*vTap;}A0~a9tUzce7&vn$R|6XgccVILmtygm;(UWSqV{&utMgL-j?2Yg= zSb!nZYL&aH=K4DDu2IHwQFXi^wOp2tA~I^E@gAL{Pi9KFKtPHd3j` zk_8$jOOsLAIj|Gax3tTIi4y*80BUg~fn@s+tB@V+ISlu|X9FxiIYmiN!}gcT`NX8aLOb)x5A(+()A^u+i6<8SCVX?@>(7pvi}(|fgn zQcOp6zQ3L31OZWWcmj+vma#SJEtg>mrdb>#I9Haui=)f3zVO3n;QU^OGQenrUZvuLHt!;rlRg?fW9aS++VKNT>e@ z#$^oneYx0uYN=ONOnqI#i_n4)B~}$voq0qi5fLdiTAsP8>ESXV0`<;b$)FejZhFQ} zGWMdhwxiy+E~o+-ca*ps$)@SC?FvYa9Rws-ZNNqJX}ZTGIW}p!Sr37!06PX|s*U#N(GJJ&4lD4Zk`AQ8%MGy+P ztC(~uVjJXQ=`DZfbLbR>avVGE9r(K?qJ?$QA5`!uH7}pKs$Xi?jzHK!?YBbvE!as- z6;orZEpO_aE;eh06f%TeBNKsv%;$42%Z?oN#sEI#(XuSQxg#J)w~#r%z#SKR#R!=6##iaZ$^pHF0cF zl)*m)Y||ld^g+85Dy=J-Z%2a1T6>L_y7lIrG#O#{W&1H6!AQf?ks=DUP!>-@UGESh zeF4&((r{b>Ra)H5HM_3WuyXlh-eX3i4)@jpD=1g^v(3tQOA@UR!mz=2;tBIa#K{s2 zyyKXG!n`Zvt>o%NgrJaQo*|ZZBMuFU@l_@$biz-;Yn!_O(1Qv8)KJ(%OxqfHw+Y2M z-L8%iV=8(jDUKsi;9$b-t0YZ4H?5tDR=_wJ@ZTq3gw5tUAT~+tU`3%|txS`aSk+Bn zCtrKBs4_D*w29`N8m+?0zm{B8l60{z$gZ8U^_MDZ zAEJtBXArVQ`mV-~+^aX9eXUfu4FIbcQ#1jIh8WhqZ7aEY6yo|JTU%DT{lv*xwH;@X zXNN1q_z|j)^=)ka&9nWBy}-M^=OCeQk->%*bjaJz8dSISCl=bBnM z&B_M)z7~wmh2@o}3e~b$CMlhw{-eDqoKdzQ@MgitO^`dus z)F9hQDiHp-ZkH^zgy0hUDnM3|xWG_e|13B6KliOsh%&!NU`m3P8A-n2Q3<}ahKtyr z4F4S5BjfzVk`Pz`gwN8uD5mDLlyz?fr|ULSU5V}V`~s9B&dEEpBfr$go@jdyKQ|C=IErl&L zCEYAe5DZn>xia7`jrr2b46M-gu;S=TmVkIaj62^&Z->TsHzjzn#w(CK|ME9R6eZrJ zH0?K49Fa7KIh%Iu8PD{pMNR*Vk_4MGgZu%W4Xpov?6gTy5zrw2(njs^L14n9X@X~ZIxs=eEGDg^@^7fn3VJ+ducqE6 zy9kpr1d3=7<@+1p>gLMnoQmM=$8B)>QFk$rl*HwRA_y&hE{iEo=Y#Gid~KNHdP`Jp65I01qF*eWU>jgWmT=;FY$EW2oYskIUP!y?!Uk$fLscXwp~eJoKu?77^cTG~;>1a8$%wZ^{k^-V2gdM;?|8+Oc8d&Tu06f}OvmNeb z*W?y@$}Y5;+g zcyrcaIkHmCQVI!@$xe+OP#Q5>BGff=Im#3=+rP7jz#*z+6j##@L2G`JjkHBBC8hNX zq&c|1Z6+Z_6vY(`nMF`4TFaRp=%jQ;Tof#VQk=n%rvlQ4==u%Fg}(J!F7WTK}axjchc|K`oh^rks#ZD!wjrp@s zmMY~AYMk?}z}L-RXI6sY-})zVr>I)t#ginbepLOW1FWR-`FV-MVuTu^ww!qM{y%Jt z<%!C7w&E~r={?IZ0Do>*X##Nmm<$`qRs*Xu?H)A|^bSz!t9Tou;uE#@)J|q7;N>ja z1sqlk1|q31@tj&#{DzWPMsJ_AF~4A3L>7UtZV(FtIE;F^gUtx*$}2b>IeQdmE2dCz z^60(_?A6-l!U7XBbye?-RZQndYVu38m!U;P8TtaAEVaLQ0I_8aqg1*HBp6duEr+I? zxP|w7itU*K1FGG{uzfHei)Ok%MP$Ux^LiFBsPm?y)s?p1#zGGzh!dDHXh&D(W!YH!aXo^b#t}5XxO$C%eefJ;fLmNzFu_f`$mO2 zx|ld7ZhS^X#DxOu%KU2_6=f}tBkwU4j5douWt zsv<=M4+4Wh7Ka>!dyVT&S>I#{qh#}djJan0l*G42XpghTe(|A3lX)M_KGP- zFQN2clBd_EGQW*REc38XQJk#UJGPV2!=`#24HVoD8lX%RMxnyFk+cwl&fr`4{3=>t#&O)R(qf8VwsS>$X�efj#!_ED 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 oyM@XhCK&eD|w| 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 -f|!HU23*EVq0WY+ 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%0AW`hwjh4e-(?iU}G4284C;$gVvT}gSAWqL!YLe zOPBE{sT=E@rj{$E?AVt|@%Sj%eRr`@*KsBm?X_6JtV__02pf8h9F^ws4@QF8Tk*E>8{_jHcS=HS-8&Svk~ZC&Fe1SD#9Tl=fB8MN zchce|wIvIU#&RA+LJ~9QmdmM4um)1XjAK)IpmA#GMk$Apx-2Vyt2U4Eqdk?&c_;{2 znua!H)jAhPEhZ}tI7+CuAo#Sid|0EfdrL&)nT%k@>3lZCDXiYk>g_AQLw?wvW-eK^ z6I+a`pFZ}nxy(Dff}f_&g#~tMf0CmO&nTq3F^if=SUdnW3OFwE8jaZ?Id6Ybx7A+| z8?4MAU};OnLBUqByx|JGVT<>5VCe;#^u|V7?N_`?-v)s-PGL!o&y;}eINU;dBPEMU z0CW#W-C8&vn1E?kUwYtD!MHTN8BmtVrV&Mw9=e#P3sS|o8fAc;_Z3a#e>lvW1anZ- z;Y62=v)!_iKN$Rxj35N?)lPALKE8Fu3}1dR9-s-%?^3j@T6lJZmGq#sZs`4mD4D(G z*q5lCNb zjjWoqASa{`Jj}HBbkOz}jqSY+lMh1V4yLCO?S*ztp_~@?JFcZ3X4uKeY%_i@PPax< zx+bJq^rBfa5GVMhPWAj36F010hzI>OS=3D$gT1FDd8N3MacYfne=Ba)qZGyjyP1?` z{prrnD$p-o&qt5ti^({h4RUqTy8IQ?i4_nI^^`cLJVDtn1Q;|?@5<)Vd~WpU$VY%& z?~D;6CiPhJM&RD;Ob_~XAbh`aNoemN95S0A)S{Fr)G?O51#X2{&}Ga?6#MJ)vC_(sN6wTKHgO6E+n6uHv6`# zN!c|UKC!d80Hcc#b}n>hrBe3<>+1RWuWDqS(D&ug6jjc)v>dF1S`@MRJXsl7oWix- zawJMZM@p&Ce}nj@HzW7u_fYWKoNKJ4qw8l!mc`k7!_o1{I&Ok?bwmF1Cwv{LBuK_s zYnm?ZR>wr&?x#&e38#q*jK=}odhwWVy?^F|3y55f#mR6kpZCGI6+kbR+snP#ga$&(6LVT5o9+mi=uf8LyTfDQzFqzT$as;s>o6+z;D z>z9ZiLf`_0Dnw#;9?NGv36!5y{`dW7^wm=Qg6mi+sa4PSagTov=M9K_yGmaM>h~h_ zA4zx#5*2*ohgIa|I&<2-;N^6?r74-a#m;jiC)ADt`{GDzGM;!^ffKL!);NYf#g>h@qC5|&^5UsIszSCh0kmF9`F+7Ho$yOf^#Wo1O)v| zHPcwL=Cv_0CF@;DZgFKLlg=~zPfDi}Q!HerfA-&Sm|uq0bfQg%W%jO49*-(zIC!D) z48h1vD{0{qYD2jw3&|{b>dLzr8`Wf z-M*yg2dr^r!oq25DFr9VM@McIti)-q~ ze<#D8vk+Mss+O*5iBFFa*{=B8t29f}bFFg)tQa1GF8lI3_DuOdsSYjk>|Z8Q0WN$R z9c*fmt0K?la<|$`5=m-?F~GIkY7Kzm|MnIAlr!ncvyS!EBRRa9MGkmh^yns|14)_IuPRc!|GFH zUM_#Jf2A*JP{INdhgS@2YV+|p9|>Fo`503yLHD?!rBx@(ROC3CAKO1L|KA}YH*DE( z8Q}|g5P+9M2ih|XyJFwzK^ub{4*r1GnzoKpz0-U5DCJ~=6^@P;`CMutA_&dlV_!~EaUx8?n{7q7@*}{) z-NkYIvx@*~>QB>%j|_;ya|Lz|e?T*!8jR0n$`1T#JN)rBw!=l5?~_)Pp3#r^a--G$ zOj@o%X163|9n)q*HysPAYoaQ|9_EM`Oa5j-z|&2|_kZg*l|yzA$ka!eD(DnwUD_G7 zFKl;nJoEauD4R|oMFs@XAUVD>KZ0;pyf_I_VS(>|Io& zyp~0Udi+2M=mRv1(mY!)*ad@_1_A)~mg`tAUa!+Si-^Y5pBk?Ee@VRF@As3w)_DKn zfw@UIfegD_7K@ul9%sN8VQ4-w?zONNc-f3IkZk#So!B@ShS#BLLJ1cM@bdmQN?+r+ z@Zkm|z(S5XaLwtQ`vsqLrf~ST@Y3o`8A(7%;=+wLo7jr$2kKjB{TDHED*kHygwb}MH# zEefjFICD)7CThLotNdwTs~!~ksswvxenQuul;?O2?xlCFtnzBGHpqEAdg)-S0d>|U zgT==Ci=2-9KNo7_g2@7}8ivN{Rrk6~t#yBZBEP ze-MgUX^B=;zzSb5rT78cMVB)-9Y3Z9O)@hT4kll{^SmWYgY?{`Y9R(5i{c)7E)hx# zJ6gs5U2Imye}m0dzjfwrs=9wVeKuZH!WA7$cZ;!Pf*V;$(5k;*s;Wn(T{lP8h=ZUD z9le=%rS!+t(PE`KDZ%I}>%ojTE+5fI4Sf5+E&4qYkP>mgv-}d;Efe&-JDT<$on}!A z8ix1>8S~bJLvG$RtzZ}Aq|Gz&w;rR%$A{(;ulxPGe|65caZ&aSUg34a3gzKDXnLQ>44K)q5A3EaI0<#L{?8o{FR6qo|p1q9odq z^My?)L$&fX>ZEE>?xZpk@NNUG$`@blL4`{#=vl^Lyb;-1lA5PIPjaptpAll5CpKx2 z#@x;}e|coLv1zI-+w$A0c&HA}%H#;vq7gF`I|61kGCgNac&i( z^F{NO^DONwv0I0bE(GC|$dSuqm4mx}nFH*uf5|;wojw@!pmKBgNkKRcs0`_<=br{gVXnI+Snn9= zMxr|i?TZ!c>CHCt@SJL}4Hd6g&LZv8*~03s0Zb;pb*<_tI9M}3t%_as(TteT=#xAK zB@`?(T`Ic@X)he*1|~~#60#IL2kw2If4fUTAwABJpMmB0xP81$jumu*JHIm+C?Mo5 z)3md^kc?6B+DvSA9rJI`^^hDdnt!xK{A{w7HDkBgEIF7*`^s z%^mXZyl04PZaJoIi3oho_(pV>EP@ZLr;42vmA9zb7?$Tc{7s-bQtth3!YXr-e@0e& z;N`LX5=mynV=H{Q_ZqL7BB^wa_aM6g!IVWJ)zsvfBQ@Y&3;vse1_fec<-o$1*+9p0 zSsn1dDa_-olWI9pP46m*O=f+nR)jO`YKvV~;j*lzQJXci=5h6b4rH5;towh>&o z`8bP5sq$v7x2GA@nSc~Kz{nk1bK_4c_wjJ#w(}e`-h%?P!izit6N!Eoeg(s(?Re1_s@{!an#}W2sk%{pHW% zKX{?E=2_OytSRa}kn;!m*MaRLgg<@CCJqa!^H?+*J26jo2}^YRq0pRXU|?hEqrK#Au|Td%#B=xpbxmNe{fcWO>c#lZ&s4P zlWOp|p%^@PKL{P}iH)5CcS0}@hH3N;DEY%KRc-DCLr6tqYrHFucg-B8FW2R-c~R;d z4NbN&@dej>-x#9prGOpgAjp_{^I&tuz~17%bR8Bom8dk@`ome*P&g!(I7J&K0j$(t z349x>9!5ymUErn}e{Y?3F5QYj?oL?^aP;DuoU5LK8x-+dUKHkLQeZL9!>gS7rHbRk zO3+^C(Ay>K?HaO%By9{}LOzFL7s2EC(l(Fh=QkXhtCyH-T#%99#<_ROYZbu+hK;x? zC|Eb8J>nnV zEt#$Fd^C011??tUdCFFd{Gy%&TbpHsm4^a&oQc?TJ<5>N+%Ja0a<3fTzt&k4a#NCn zxp50evhacfskqU+>BsWq+yFNvHvc)r0Q4(r>7zrRbL4p>qDdI2?BLs_yl|1TKkkxK zZEmb7@%PeYf9jmS^+ExMoXJSO_^fvZon)ev{7aI47W2X7 zLiA-U%J~ZvPmo2ArB>Sho=2pid)E6#>ur9;=U;_e1wdEcrp{c#S|JY1CXsl&4KfX? zE#bCHm$N$GxIc1+Akq(#87|!9Yj$0$s>Brem>pOk+SCYmcd@tN)7bWqQa!fM>DRUP ze}w~d_?3%Nj0hXeh>CaBG)kW>WDDlIao*~YvMt)VIVc0M3TC^Kmr0GO!MwfVqg)1V zhWrls*MF!|$6`#FC5e;uT%-22Hs9K9h4&%U2tk}^5f|7>H9Hj3mu zO>v4Vmv7NWb4x1VHCpG_Z|hu@8-Jbf5ovN9;iOKBBwlA*i+AYuk9K{ul?&c!Id9dw zKEe7oSkc6pjE=u)VEIINmo!447dJF!(+ZN_AVml>kIMSlFNz}+MoFhC1U4)se{hmF z*z(a5nsK>7uk>-s)tkjJ4q8JN5*_gl-~4wKN9XMO^C`#C3D^sZays`+wjB0Ja~(OJ zfyq<4#E?0U$2fVLNz=uINz(|Vz8VNb$jBKzV0 z!>}XGtNm{ezN%3USjwl-DgU)ycy`69H7-d1s>u6BM;wLljq2c*hyGyF>r(oqrTU68 z#}6wH7EO0Ne=VBkz5d)?fhG1=-10q(m9TnwnTaED`9;5tt*VK5pTyq_f0R()>mM67 zHg3stM_w|F{~uA3XF&Dflj)Sp`QZDb<*x0Q_2X#uR#`@y+sR_01LA4Ezr`hhf{|?z zE;(C6iL{8+smd_Z8Zj+f<5evg>UAxj;&+j&o$zBQx zcVo_v4s{}2A_p`xm;D?G2eZ5?^va^zfZwRbn2>8*lm~AWm?M+u7;3@tN|kqyjzgG! z1ZQsJ8E-cxEq|EP355f4Q}OwV7ME6d_I*K-TYy>9lv}ShIX=p?e?2#Fa}n={py-X_ z(bSCVsqnFd>rJTpKX6l|CA69Oa(>_QjyWzJ&rKMYwWKOQ7w1!vz#EEuq< zy#!Y$X9VH>@BjGi0Boyu%K(E2zJ8r)UH-|scIjY{`}`Ui18eVz_N-!#iiAHfk|WTw zF5@aadhQdOK&ASG#VR=o5WHZLUd1P$wf0V2h%Yjo)XE|J{-v4JvibcEea-_jp&q_oU)jOy+xS|96}$y zC(_nMC@2jIf?*ta-zT5yW@C9bZ5Zuc<87XDp5c+jd9CPCs_B2#a%kc$2-UV4v`iW4Pj~8iP(hNa2;xC<`Cs+ z%-W{iT~w0F7nrpd(^`%A$_gPc*@nex@IGb7{utr?4gJ=<`pUT)2MgCtNHYV$bzrpX zi7dL{YR{D4rPI1nX1AZaOu*eteeRK_L1)iC9kOgd82+ro ze`8Bi!mjwt6R4K6dd#UceB2F7%*FoCmLaav_pcsvK#Lv|S@=2m5T{xiz7v3yhG%J# z5^7u5$gY~vU@P;>1~zx>GrhWEizGshA`q<4D0IlX3fn;Z2#DznjNyb7Joy_zi~Ca) zxc;nJYL_a3?M7!qK<|mji}TTPk*Xj(f2FDM-IG^F|5bRT@dW1*LPIrCOoFDE9aOAs ztV}B^ej{>(#my0n$!pa>BkOf2kj9Ln?Q2U(i#>`!u=$W5YR<(y6_lS#lsXqt;eWTm zo#v&*>DE#gu_VjhDS7%6^=H$R1C42c4H}S%zC&WC+VW$VQhZWNKA#PLuJvfifmOSzC$zvS25pY*P@D?ge_Dfd#&!mQ z>VAw+ofaGWRBE95LbWYP>Ju+rOWIFC%R&g7R-11UO7G)4C$UNgI(?vRA=1#)Ov=dZ zhV5s_43)4AF1SqZMTl-)>~mfL}LRhU>{iw`R$U5$E;fGGrPK4sy&vIZg90csmBqO(iQ z?HF>m~2#$mlRVFnk*rJ>-_e@w=+rRD&df^N-5 znE-nWp04}l*r2mlP+4@to9~{e3uE;abkbuTp63gle?p3`Vc!IXTInaLj%>5RYHZD} zYtK)&?Rc2=;hQh+gN0}{w>&T}5lJuN)M-2w=IY28TViDkfJ8tM0zX z)(8>~VGru%CX#Qsw~^8q&oV8M2R|>b^kw`g%K>Riu58ZQf9<;H@GL$G@*yI)ySF>s zF%=`<@MXT#!YX?$IhAvd6dnO)as-f}B&W0K(){3?9S!U-97r6vu9|e!wv2D)UaV8^ zw`%|g_sOMFP57KJCE_(Lo)_{iPbCW)c@_S2edJI2LcQAC51I1;ONhjNB+KyN_&Zk= zpiK}PGyY)Ze@sKF`zOlyO_|%qP4BLd6?&29BlP_o$8z+{1~E_!7989tGg1!DcjD*g zsbNa}BG_l~<~#HiQ(s14YK>C3MHNWxT`CoWKwHkQ1Vi?maqgzvTd__d%4JPiDt|_b z5MBhUu1C0Yl}AGf@p_o&1}(~wc8n}kQH)0rO`-;;e_fZu9K8ovSHV}E$6QWSHUARL zKnoNFaHXUzGCGHW7bun{1bY010|UD`B>@*4lY!25teE=5{Cq9lCHR~3bD}^;j#VpP z>x)b2fN9nATA%RiJL$q>Tp_PDXs?!c^Tvre?aNBrFwT5cmPNL(C43EYG(l0M3O%A= z(gXacqW-5E+I}LlVbmuE!@#1lQB;%SR|G70rLQFXoX-?z(T6i9S{XQq z;hBE&Y)HD}iSC;!4UDk`5-hwdt{))V7CxDs4?T4f79a;tsA5?`D3zN*S!o5+%^fQ;aGGkgc4a429DT<_}OT2dSmb^u+%!Z_h}0Gf5}z)yxqgfA^21 zCo_nap~U9PxY))SWTZRV3WR05uQXcZQ2>`5Oe=B&umUn&B9XP6ZrN#5m;>ti;OaXK zf9HWHBX*-4i;-$wqD7yB==hAR|0c{pBw~P8rgDIWPT1j%m@5vB0Ktdvp|4G^bYFxb zWgDw*yf(PuZ!|%g9+W3rBd9^xucBJ}#b|oOvS=Qdnm>jA@F386Ok(~Mb&rb6nrlDs zt(Ui?K|8bz(wDGssK@SJgbOP-K%do+e?XL@PUeFg7oc8I5&<1O?6o9z7Z18RtXkZR zO0_3Pg!vPIMsST)K9v>v%?dR1yoT@&-XN4WZui;NY>q}nr|{>ja)BR$IvemY5!lB} zJaOu6>}n#B*R%%8Gk;T2!kWtj#l$WQ`xQv6-Za#mj8^6!MTe&@bg!WoL*po+fA_m6 z4(Uw6h`?19k;OU)vC+!sbgDd?hE;Bq4J~08s2UDIE(xB~L=kUcSxevkzOPas7<+M~ke*x@LVaDbF{J}36&mS4O}JR-AD#!Sv1{dmZlibtu$QL;n~Kgt4> zW&WrAF$ej~5VPtnY(#FA;c?^7e~Z*rl{G+_%H-yD(1B>i$uHwM$9Oy4+7j~E{aYgl z&R}xb45`=F&9Q{~?3!4GamY@G2lS{+UD=7m?otd%Fi^w>wIPXnK=SR~ILI$E62V{+ zU$Okf9awlV36uSuH?!e@O$DP0i4o zDWf7q4bf+H#iv-HK85K7##Lz$7L)MO+T23a+DZeTG{A@;K@B5<3)79tsn>Jp!>nK3 zbyNsnZkS_3eEN_ljK##N8SI#QWX<#61j5@H68w-kE;@PkSGW8N2V#GU6J zJV^z?NwUrgx@5lYOk@g9e}EOMKkGN=fd`%;@FD*Gm@Es@YCbft$C1XvSx(8Ju z3Jq-$dx>zCmXdsZ{}^zVC0Nswrfj;T)3sM9enAW&_V2NAbI)GbzA2z(em^T-7RUSFR?rXq(ij{6Yonf4!nciwUOICboT{F{^!DlVGF zaqhltzTgv-nTV(AylmvpuF&CJcraJA#qF3O)^;O!2f0^1BHaSNbB&4j2w&2eTCQ1V zG=0%3{&M2_Et@|pe`j+A9Xl_ynSJ@BuBxQJ3TS(CG_luKYtyjIallcuD$t_Y7I2`N zg{!TYFX!_nYro*ZQR}D#a?}5qi4RT@7U}1QR*1-21>}me^^WZo z=r+$|h=0y-3Z$bc$Y0)e?j6Lm1@l0!kZTCSMbqoRuB~>b5q_R zBqfT;nW%AgHU%Uru7{tt!1=gn6zk5M+Ddg&Z@x$co200B4T5w67Gy#}mZ>{?Ho)h+ zOfId$3odI>f3cRm_x-B~Mk*6_h9@4%0c%v`=Dcm-un$+(=x@_c?I3|TOK|3Yk=3qC3D>O&i|uoIfDz<3RN3@Myz!BQhT?IF+Ji#h5y4lJ}g45O5?YJcq~ z9At7!83u&29+V|A#Hdfw0%0@5Nb8Xl9Dr{BmNboH(_3cGh2K6n$$3h~?Ks8@?c`g5 zO(R2@e~Iw*#oqI!z9;CmjB>ddQ_1Mp9RONT>Tt8USV?U(&iv8^@eQg{{vqwBDW|@F zwj7fL{8*leHjwRsP@Ol3w5w7k$*3VGFJnUE%0|0-nhRhV?kxj@l&wpJ8kly9(Nji~ z;J`%K6x6E6Y^j*B_F(QH25l2Oe8Bf+dArBLf5GtJJ)=r#BjUiMm$d+*dgE%a`nfI6 z^cF+X_SeEEljm>DT;gYU*rQ9ZYF48s1wIdLP9Ygd zfA1}_THy-X{7F|D#&Elljb2YSZtEO&SpE;CY_ND!Zey@5Wo0pawu>Wu=S%_sK!{_R z)ZCnR*hZSQGlx2-VyCP9c8V*yv=j5e5#e`FNK-MqbfeU6sp!qW8;lU8)V(0!kmR^ZM~ zThwj>W4p|$!7UYo{~b!(n)c!)Yp2`@;uXtj<@#^x;FBVEMrBUdJ{cy7hWTd(a7LII z^|+B&GGqL@X|?qhn>BW_DBmnUQqxIC;8<^WbVCQ?=s3q6#4Jq;AkJ`l3Ptztf7lWi z>)La5%((hTMqhPTPGjA`9osEKTstS;3*9Z#!@zKiQFo3YXQM=QWV6g(eu1h>`ruwwU^23RrdF2tCph&ZKf8bG#e{I0fTAt{To#@2`59Tmk(3S*6;n8r1dbgwQ zb;niiwNTGZr+AWbUXYsQ{CO1{{KpA3V9D%@2Ex%*t0*hQ#|hLvCm`~Ko=k}D@c#w( z@S31(18D}1gIOE0WW*YMN(5{0|IayOM-zj)s5xbVt(%`yk(@#vlzx-Fe^S-l>1oa_ zI9pcsS6=YZZ!f_v&J&Ef_x8NAH%PV0QKtHL(E1x2%Hm`Lc~#6BeSg)rS50iq{9MtG zU7n2Z<%8)Ns4?bQ5 z=8&-li`9z_odF8ny{#zIe{WXwB;TMQUi$ged+a>^Cd@6ejucm%h`MStd!tOE37?AC zVoX<>J~T4jBH(v8D&i zg6*W%ugV__jQVx+F_$YtN(3wTP$T`6JIEHjai{ozf-j(uioyfY%YLpxN&Zt6N_*m0 zlYqea(WvQS>GM%aL|U6qM7Qc&M`cgmb~hBZ}GtI&LlSOsh`> zYj(Heie>C;R<6n3e-cai(R1+^)};%R`v?X@>xF(nv4=;^$pSkhu&L+f9H@ZdsJAb@-M9^mL_IBZX03rdYZ0#UVi+4h-8)J(~ zB7<(Ieyb$+f6&gmj}lR1uq;W!D4y|g2xSO_^C0-p`y+c5y0uWK;PY*)1V9y0+2l;> zZ5b|3yba!&J&n4(f&R8c4J5&!6dY-Cs`^4aWU344mssFonKKuPJ>reLDQ@{GpoKbJ z>w&;=koZqsBPBb~!l*Ba#OPGQKPXABg#y!r8W{hVf0QCdjIB>;@#*G)2IUsYH=jNwxkt+TPMka+I zO9{#kapa@oLY5N=Xs@*>N;0w`Yzi)!Q{RrN@+k;!wU-UDU9=Q;COX!!nBmEadwv(s z%0;2}e_)=5eDumnyOtWBVh1Ld(@iQ+(k3|;Nc=O*e=R>(k)H3+JCJCLug8(HR?xme zFIYJ(W?@x02gftid8#+T34Js1H$!7#tNIYuvy0I4lrPN>Rj45+zvHk2#K~*C)EbD5 zZAF9B9#zdzA{p)wLt{A>i1io9vf2VNIPqLRe{{|f?)R*c{W>IbM=Lh~DT3a}o~=U6 z<7{dVHVtTsAn9^sk)0(Ok63gDz?p_5k`Ut2SMf^ycu@c$24As6PY&=uT--gjRyL;B z;JIl*Ah7#<`?w5A-n*&tD|cRcjW{7^UK$=E`Bc-7z2m%Mx0)EnFJCcDN&3BIr@FkB zf3vP(dKR=nt*+;33La=|S_Tl6^@9bSUm|{&Y0nS0xh2bUb_1QWMOj0BQHmsaou6u0ls1c?Ke zWAg+Qm+#L6xwl2s1keHkH8q#9+62kB;MWAt0s=KQx3Ss;m;(Vdm$2Fd%C{8X1kVBj zH8_{C+5{B0`QZeI0|7a=f#n370|GWMm$BLe6qoto1WUJl=>$6i0yZ(1vDyR_x6bSY zhywyPGPhXp1PcQJHj@#A6SsHs1p5L3GMB#z1ss=;_5=$LFgFS>Ol59obZ8(mIX5zs zu}~?0TUm44Mz(&}ufSt+r>x$$Td7n@c5G|B+p^-Pz-8c4m7;!K zX{q6ED{btNbgnWQ$3ta+mY!GED7eeYdg%9ms&Wc=0PQUH+sX^z>wV=7_J>Mv0Stox zLIcMjK@$`kbR{H*HNjLu>RW=dE<1>`7!Facx=RdE(3OEiFsBPG#) zG7Uo#LB+|^R>~M8fV-n^4+Jg;F&gnzidWi8P!#|&C{V$$322T|mDMsFDWw5Ng_CXN zgaRILIRoQLbMPGaPJv*r!Kq5?$~y!>1Ii&F;j4h=Do`a@cv1%7q=u3p#H!~2+$jx4203>b#jZZG$1X1JTUj<9|#!qn3OO9#0sf}IYMVjLp}z=fo>j$ zf^wAxhbs&<;185UH=#}{It=?XP?F<3gHD1#70ME2kn$XKhxN*7^a`k~JV&?SJOV_3 zcoht+;1DR9BYvEM2x39OT%a(}1IW-4Mr8o?w8B6J!-Uq{K_GIZJi3Hm|L(u{Idf*-KhOKlJZH{14}SVhghwz#7738sc?PLo z^VQ1Z>faL)#OObVt#gtrnk*yRdwlzBcH#%sxjUc_xQ+|X1j8C>#2~6MGOz31y4Ixk z&Khu-$)t*}xzgjh#?H!e9u%N8Os@;>+IpMol|xB_@>k((s+bxs2cwEX6T{_7@b@{z zl`r0xu28g(EcQ#~AGb=(Gt0D)T~)tEi7Wrr-vYX5(5$ju0h``By9RV2t8>yV`OLkIyvbo`_hpiq~f10I8U^wB(xYGDiXhw>_yZtg<>%ofF(; z);~C%OuDxiXvym{&wc9D-7-ij9^LRu_+XWfi_&E_jWGRpE6s~9veR`E&VONTL7J^a z`|qb)A6thK_72=HY@my+_CdvsmQfO}Z4DO5v2rYzufAdb9@_WrbnP4t5sBm znP?i^q>lX#Vx>TG6V4||Dj9$IMIysl+nM^Ey3EL>B65138A>x&O+}p`P56^>LOhQz zgpHeJ3@{*oA2(Cy2|*Vs%h6FxxTGjNWWaCBtp ztQCIJXz%ab1@T2|1587riTMo2UXv=oUcD!5#k$QPSjCWiCjU}2pO{#udpA;7l4(a$ zGp_#my9~_a0cxlfDA}Az(o6Yui5DQOu0c$@0GvI3D%7m}oSg>4;1$u@9&+J`*6o%m zD0ybHMYNJrxIRBkaxy_FHR)%p^@A$yaHYWItnCTI(qG2#;o-0Qbp<-*!dogguyV%V zE{?*%zq2c;W=s3P7i*$8Zy>2)2hL(SF04(@s%rMe2u2*Ucc&n(eWD63rUq+SF;E=~ z!eM8O6`$S}j-~J+@sre(^oOHbE{`L%Ie<{c!n`Yu+(){7plyy zd~>F9b!+DeA0wy9?A{}oheP??fOu!iKXNEtV6WO?@;`*>`@}NOKW%a-Xe~5 zLww92_F@9ABu;8R`uPt68P^0;IN(3ff(AdxBgu4Qhd`}#EH>RtIQRhKxPA&|GSARS zwhRsuQvByHMP0&r^j_L=?UuA}B>#z)RVKy(@`wl}1Tj@;3aNl#r2vPNBx@a70*c7m z0Yk}FRq;4d<7DRc^*H1YLRX>Wsx9E~r}}W~lN_-R`g_IKv;oipw5`OFgBs(5YBVCkuZ8+~VIIHrO|BVD%YgvLpv1@{8E z@s+x{vfsxZ{;c*>w;3+J>HeBN?2q~TX)*LJ*hBx1L`M#oDIWXtZV{AO(f8XMw#Qnc z7vkq1n;(6~Bk zH&~CwE7l^8dk7{>eF~Qa)iynGVDP$Pj#{IbSb<8!&5|u;m=>%I1KD|JQ+@V`9wV{; zG(`b22851>P2L>5Lkv>2Nbs#^I9{FrZf!`+t<~c6C|Rbvf1$aoI(k33*)CFB&v59M zafb8gXH_Ehhy%VM{EyC0wY81E>qv|U!=&{oB7klg0V*nsJwbvr&gkEH&EH~%sUtup znnQ@%(idLZxVCq!?W(Iq@>b2B!?n`(odI6Q=(8(@uKhX74&PRK=>RITrJi?sePnPv zEcbTZFT4CK>=6qj98}gbipD=q`%${y~s<1br-ufWvDW+ykHZ98^FDbvsa)n zOgAv^_H&m^ay}^uyH^lhPwZ0I(L<-wURdL=0r0Yn|LOPm&TdC4ol8HpU4dKm3zwgs z%WMUy60vK!AACWa2-Jx9ftT*7;>f&h+oC#Tvd-Y1kAatMm8sg?|ATf|?7&&swGqY9 zb6&k?QTb{yo`zvQKTpNOitA!I0p^*_BP7}-x$B~RI)(Cn8GD3n*-&!WdwvETN%k8n zMvGM9H#mxMoI^N6gfSv9?HMxUmm0Fbd{qY$LAYuTU@2+govx60=`tizV0XAoCma?q z-;NS4YP;%7<=oTMjlgrzYm!F4B#jT753CGzaU!_C6{S0oao%RJ?)o<%EM>_ae!pw4 zzwv9|=T?(uvZ|fmf363%>)z1c8}duS60E!{XTE$Vnp0i{IhAnFT*%N_<83Y74m|RH zp_ywgjuurT+-*g%`sx~VmcsGq%#`5pl$)J0qFJw1gu8;-Xj9%&L^%GNubT$_E-YO_L+usnZd)0ZQ_srgKYC^Mo#=bViW=rz;9Z!$bz&+qm|+vlRec zTRSQ=Sv}-706${~6w1~0#r5sGx{9jXCXl>c08U}8H-k-pcWwHQVSg<4k-pa*;q=`n zDG5eEKh&USXckOdS`XSwTd4cevt9em>H^QQOdz38x7lAN_4Z*7m6Fr)6oR|w);ql{ zuF3BWUG~Rm)~s6>s?yi|{;qvqmL4SFTKd5=xM?t)v z2#Z(o&kT<+P+b}8LG}If$BtUpj{)DJI!idP?OAo>N6ukFPQ^}v14+Aq@8x0mD%Q0k zyn!v{GLsC&U-)Sa@K-7u!{B7ze^9(mw{<_Ip+%d8*nZI|2A$B_&Auq#4=Zbh0lr5` zejh}--bRkCJsO?OrKRs5R~)A+DemAuoL#RWC$MS0a!v5fRYxdC9P9zv!yVOfYVj%EhYlL#@3(SX8`ka_ zMR~AcV+?gnGN3+a=YP-3Ymp1Y^6uJH-Q))QLb?yWZe%q%_n;9!Uo* znij*lC*q(RX-OY{j!E`Zv?&`K%Mb%sSU{9dOjwv-IQi{}48MqI2M3?T5o#Xc>K zz@yFwIkOol>8j9AV_z@0+1MS!|fY~U%>r42|$X2fr*Pp?lQ^j z0#UiG=c`pHPUNTNd4-_H&NSLV(NzO^;oYq%r3$^_i| z*&iT>_5G~C-f`b{vH-HAx9Xsb7l2+B_eceyK|e{dy&`)<8mmFpc0(&Vwb~?DO^0$9 zr$$$-AP{67Ei#4KkFWN5<5{fxXDm`CP3l+Fcs2ZSM7ZV&V`SQ4EST(|Zk)ow;kD7M zo+XCu{d^_0FmD;U{pEah02C&Hs0Y*4U$+N4JnTvw7|3M5tE4;jHM|e}8N+Gd2fK|o=1rr%K&XuOUMK!peXOdEGqpMMA zCR1wo2cWMApC2RR5|x~H>VpBPfVV@7>iV%;#-p`Y*@(Dpp}sn_`wdo;Nj=JWZoipE zxv+>puyCQUAjREG`cDJezasnJFgme#;N0=v|7`7e^Xy>halkXP`!(!jZ=f>hc9}lD zfmId{iD8aq|0EZDQBgzyO+aCjgcW|X7`ZxH)Q{6$+%}#$jEH&P$WzJ{X+cf$WsQ->KYfC%%^U^B^-yB#t942Lk)KmIlSPN-LW=Wf{Cc7?IhUq zN{jK$S8w&sbqpeBrDqt+PfD@ZAoh;LX;>y=~hko}gR;hVo}!MSc?f`-Vk`QvU@6mE)3`i+7f z_JMt5zD`^DwyI;g*Bi${|MCLwT#J$^7rs}6jl*{&++j^G1;bVT3EZAGs8$P3vk(bN z=~K0zHatrbG|h)Wrpv+wyiIuGPUpVupI#_DG=aR^1lEhYO83CqRXFPwDmSr5hk&A( z6UGm@q#bl|$6)uf3ueK;a;xnZ*-dFDuC>-!q!&b&kmo5c2W-J>8s|~xF^q`pbjq}c zToaFr`>7oIHy8eITcSI{s;;(fk4Wf0NRiP*QUNHUD5$6)CnUlzC#1;FCnO{&An=$X$S%10PuA)YGB2}_j|8~KQrf%}CI-?j&k zfv>Mch_6@hYgUrTah+|Vp*nIu&={Ui>u>&&tf3w_UKWLIAMwHvcd44bu{)S5qK9OI zH~x<1M)=&xc?_9XgJm_^pXtIR)T6U{HiPA4LFXL#uRS;FbDvgm%0tgZr8uN>(V-r>L_>C>=&H%E%_#|f5~CxfswpG$!8Vs+ zoi+@BaFQ=98`9n%Pfm~tr2yETRg@n0w_dGx%{$Y~u)egCY_WqS$;K|`_-tdy=Ayzk z#v#yHd>*ZwNT@3oS5wC&3ntQ?%LnY6?n}$rNcttU(%1t(X{`;)A;x7~& zBt3&4+)JyE-*iRAkaN}znVxvqUWbue<#+%2>WtKE4L-;0^&UU-Pa>uLjuK|(YK(eA znVL+wpgcP~YT(r4+49R7^TpVvyP&k4gbFPEFOmxI9R(L3q5foR69?x%tCYu(O!toz z;KMdj2}v)y;(H3RU?zXUt->zH6xa30A0Cm{p#XH$BZrVC#srfVypKG3PwYUQ+T)t> z^kr9Rp zkRX0F9YXfVnd!_oGH8lv?r-hWWvbUpCc{E4i#ruSjo{@&NZZz#%sC`#%gpHrQf%wK zv20xV^=-qlasF2Wu#%u#0%+Nm<)8{A?G2Ldj0=>YztX0<@)JCUiyYf^!P@Aqg-ild zT=POh*0EwJOHA@yLsGERC`yf>wDUkA$CyK8CF&((&aNE&<>>m`XJ@@X XchcQRu;}pxfnq{ Date: Wed, 24 Jul 2024 08:37:16 -0500 Subject: [PATCH 15/18] The OCDP edit #397 --- R/curl.R | 280 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 149 insertions(+), 131 deletions(-) diff --git a/R/curl.R b/R/curl.R index 4f907b50..8175e325 100644 --- a/R/curl.R +++ b/R/curl.R @@ -2,160 +2,178 @@ .curlCompact <- function(x) { - lx <- vapply(x, length, numeric(1)) - x[lx != 0] + x[vapply(x, length, numeric(1)) != 0] } -.curlConfig <- function(..., token = NULL) +.curlConfig <- function(..., + token = NULL) { - opt <- list(...) - structure(list( - method = NULL, - url = NULL, - headers = NULL, - fields = NULL, - options = .curlCompact(opt), - auth_token = token, - output = NULL - ), class = "request") + structure(list( + method = NULL, + url = NULL, + headers = NULL, + fields = NULL, + options = .curlCompact(list(...)), + auth_token = token, + output = NULL + ), class = "request") } -.curlSetConfig <- function(config, override = FALSE) +.curlSetConfig <- function(config, + override = FALSE) { - stopifnot(inherits(config, "request")) - old <- getOption("httr_config") - if(is.null(old)) old <- .curlConfig() - if(!override) { - config <- .curlRequestCombine(old, config) - } - options(httr_config = config) - invisible(old) + stopifnot(inherits(config, "request")) + old <- getOption("httr_config") + + if(is.null(old)) old <- .curlConfig() + if(!override) config <- .curlRequestCombine(old, config) + + options(httr_config = config) + invisible(old) } -.curlUploadFile <- function(path, type = NULL) +.curlUploadFile <- function(path, + type = NULL) { - stopifnot(is.character(path), length(path) == 1, file.exists(path)) - if (is.null(type)) { - type <- mime::guess_type(path) - } - curl::form_file(path, type) + stopifnot(is.character(path), length(path) == 1, file.exists(path)) + if (is.null(type)) type <- mime::guess_type(path) + curl::form_file(path, type) } .curlTimeout <- function(seconds) { - if (seconds < 0.001) { - stop("Timeout cannot be less than 1 ms", call. = FALSE) - } - .curlConfig(timeout_ms = seconds * 1000) + if (seconds < 0.001) stop("Timeout cannot be less than 1 ms", call. = FALSE) + + .curlConfig(timeout_ms = seconds * 1000) } -.curlContent <- function(x, type = 'text/plain', ...) +.curlContent <- function(x, + type = 'text/plain', + ...) { - stopifnot(inherits(x, "response")) - if (inherits(x$content, 'path')) { - raw <- readBin(x$content, "raw", file.info(x$content)$size) - } else { - raw <- x$content - } - if (length(raw) == 0) return("") - - enc <- if(grepl("charset", x$headers[["content-type"]])) - toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["content-type"]])) - else - 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) - x <- iconv(readBin(raw, character()), from = enc, to = 'UTF-8', '\U25a1') - if(grepl('\U25a1', x)) warning("Project contains invalid characters. Mapped to '\U25a1'.") - if(type == 'text/csv') { - utils::read.csv(x, ...) - } else if(type == 'application/json') { - jsonlite::fromJSON(x, simplifyVector = FALSE, ...) - } else { - x - } + stopifnot(inherits(x, "response")) + raw <- if (inherits(x$content, 'path')) + { + readBin(x$content, "raw", file.info(x$content)$size) + } else + { + x$content + } + if (length(raw) == 0) return("") + + enc <- if(grepl("charset", x$headers[["content-type"]])) + { + toupper(sub('.*charset=([^;]+).*', '\\1', x$headers[["content-type"]])) + } else + { + 'ISO-8859-1' # [Default if unspecified](https://www.w3.org/International/articles/http-charset/index) + } + x <- iconv(readBin(raw, character()), from = enc, to = 'UTF-8', '\U25a1') + if(grepl('\U25a1', x)) warning("Project contains invalid characters. Mapped to '\U25a1'.") + + if(type == 'text/csv') + { + utils::read.csv(x, ...) + } else if(type == 'application/json') + { + jsonlite::fromJSON(x, simplifyVector = FALSE, ...) + } else + { + x + } } -.curlDefaultUa <- function() { - # cache this? - versions <- c(libcurl = curl::curl_version()$version, `r-curl` = as.character(utils::packageVersion("curl"))) - paste0(names(versions), "/", versions, collapse = " ") +.curlDefaultUa <- function() +{ + # cache this? + versions <- c(libcurl = curl::curl_version()$version, `r-curl` = as.character(utils::packageVersion("curl"))) + paste0(names(versions), "/", versions, collapse = " ") } -.curlRequestCombine <- function(x, y) { - z <- structure(list( - method = NULL, - url = NULL, - headers = NULL, - fields = c(x$fields, y$fields), - options = NULL, - auth_token = NULL, - output = NULL - ), class = "request") - h <- c(x$headers, y$headers) - o <- c(x$options, y$options) - z$headers <- h[!duplicated(names(h), fromLast = TRUE)] - z$options <- o[!duplicated(names(o), fromLast = TRUE)] - for(i in c('method','url','auth_token','output')) { - if(!is.null(y[[i]])) { - z[[i]] <- y[[i]] - } else if(!is.null(x[[i]])) { - z[[i]] <- x[[i]] - } +.curlRequestCombine <- function(x, + y) +{ + z <- structure(list( + method = NULL, + url = NULL, + headers = NULL, + fields = c(x$fields, y$fields), + options = NULL, + auth_token = NULL, + output = NULL + ), class = "request") + h <- c(x$headers, y$headers) + o <- c(x$options, y$options) + z$headers <- h[!duplicated(names(h), fromLast = TRUE)] + z$options <- o[!duplicated(names(o), fromLast = TRUE)] + for(i in c('method','url','auth_token','output')) + { + if(!is.null(y[[i]])) + { + z[[i]] <- y[[i]] + } else if(!is.null(x[[i]])) + { + z[[i]] <- x[[i]] } - z + } + z } -.curlRequestDefault <- function() { - dr <- structure(list( - method = NULL, - url = NULL, - headers = c(Accept = "application/json, text/xml, application/xml, */*"), - fields = NULL, - options = list(useragent = .curlDefaultUa()), - auth_token = NULL, - output = structure(list(), class = c("write_memory", "write_function")) - ), class = "request") - .curlRequestCombine(dr, getOption("httr_config")) +.curlRequestDefault <- function() +{ + dr <- structure(list( + method = NULL, + url = NULL, + headers = c(Accept = "application/json, text/xml, application/xml, */*"), + fields = NULL, + options = list(useragent = .curlDefaultUa()), + auth_token = NULL, + output = structure(list(), class = c("write_memory", "write_function")) + ), class = "request") + .curlRequestCombine(dr, getOption("httr_config")) } -.curlPost <- function(url, body, config = list()) { - h <- curl::new_handle() - body <- .curlCompact(body) - nms <- names(body) - if(is.null(nms) || any(is.na(nms) | nms == '')) { - stop("All components of body must be named", call. = FALSE) - } - flds <- lapply(body, function(x) as.character(x)) - - req <- structure(list( - method = "POST", - url = url, - headers = config$headers, - fields = c(flds, config$fields), - options = config$options, - auth_token = config$auth_token, - output = config$output - ), class = "request") - req <- .curlRequestCombine(.curlRequestDefault(), req) - req$options$post <- TRUE - - curl::handle_setopt(h, .list = req$options) - if (!is.null(req$fields)) { - curl::handle_setform(h, .list = req$fields) - } - curl::handle_setheaders(h, .list = req$headers) - on.exit(curl::handle_reset(h), add = TRUE) - - resp <- curl::curl_fetch_memory(req$url, h) - rh <- curl::parse_headers_list(resp$headers) - structure(list( - url = resp$url, - status_code = resp$status_code, - headers = rh, - all_headers = resp$headers, - cookies = curl::handle_cookies(h), - content = resp$content, - times = resp$times, - request = req, - handle = h - ), class = "response") +.curlPost <- function(url, + body, + config = list()) +{ + h <- curl::new_handle() + body <- .curlCompact(body) + nms <- names(body) + if(is.null(nms) || any(is.na(nms) | nms == '')) + stop("All components of body must be named", call. = FALSE) + + flds <- lapply(body, function(x) as.character(x)) + + req <- structure(list( + method = "POST", + url = url, + headers = config$headers, + fields = c(flds, config$fields), + options = config$options, + auth_token = config$auth_token, + output = config$output + ), class = "request") + req <- .curlRequestCombine(.curlRequestDefault(), req) + req$options$post <- TRUE + + curl::handle_setopt(h, .list = req$options) + if (!is.null(req$fields)) curl::handle_setform(h, .list = req$fields) + + curl::handle_setheaders(h, .list = req$headers) + on.exit(curl::handle_reset(h), add = TRUE) + + resp <- curl::curl_fetch_memory(req$url, h) + rh <- curl::parse_headers_list(resp$headers) + structure(list( + url = resp$url, + status_code = resp$status_code, + headers = rh, + all_headers = resp$headers, + cookies = curl::handle_cookies(h), + content = resp$content, + times = resp$times, + request = req, + handle = h + ), class = "response") } From 95b8afa9f21327ac45e0256c29cedd92ff508b40 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Wed, 24 Jul 2024 14:58:37 -0500 Subject: [PATCH 16/18] A radical refactor of config flow #397 --- DESCRIPTION | 2 +- NEWS | 2 +- R/curl.R | 144 ++++++++----------------- R/makeApiCall.R | 19 ++-- R/redcapConnection.R | 16 ++- R/zzz.R | 23 +--- tests/testthat/test-001-packageSetup.R | 12 +-- 7 files changed, 71 insertions(+), 147 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index cc84568b..dab0a2d8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: redcapAPI Type: Package Title: Interface to 'REDCap' -Version: 2.9.5 +Version: 2.10.0 Authors@R: c( person("Benjamin", "Nutter", email = "benjamin.nutter@gmail.com", role = c("ctb", "aut")), diff --git a/NEWS b/NEWS index b32e149b..5a1fc7df 100644 --- a/NEWS +++ b/NEWS @@ -10,7 +10,7 @@ A future release of version 3.0.0 will introduce several breaking changes! * The `exportProjectInfo` and `exportBundle` functions are being discontinued. Their functionality is replaced by caching values on the connection object. * The `cleanseMetaData` function is being discontinued. -## 2.9.5 +## 2.10.0 * Replace "httr" dependency with "curl" diff --git a/R/curl.R b/R/curl.R index db76998e..080ea506 100644 --- a/R/curl.R +++ b/R/curl.R @@ -5,31 +5,43 @@ x[vapply(x, length, numeric(1)) != 0] } -.curlConfig <- function(..., - token = NULL) +.curlDefaultUa <- function() +{ + versions <- c(libcurl = curl::curl_version()$version, `r-curl` = as.character(utils::packageVersion("curl"))) + paste0(names(versions), "/", versions, collapse = " ") +} + +.curlConfig <- function(url, token) { + cfg <- getOption('curl_config') + + if(is.null(cfg)) cfg <- list(headers=list(), fields=NULL, options=list()) + if(is.null(cfg$options)) cfg$options <- list() + structure(list( - method = NULL, - url = NULL, - headers = NULL, - fields = NULL, - options = .curlCompact(list(...)), + method = 'POST', + url = url, + headers = c(cfg$headers, Accept = "application/json, text/xml, application/xml, */*"), + fields = cfg$fields, + options = modifyList(list(timeout_ms = 3e5, + useragent = .curlDefaultUa(), + post = TRUE), + cfg$options), auth_token = token, - output = NULL + output = structure(list(), class = c("write_memory", "write_function")) ), class = "request") } -.curlSetConfig <- function(config, - override = FALSE) +.curlMergeConfig <- function(x, + y) { - stopifnot(inherits(config, "request")) - old <- getOption("httr_config") - - if(is.null(old)) old <- .curlConfig() - if(!override) config <- .curlRequestCombine(old, config) - - options(httr_config = config) - invisible(old) + if(!is.null(y)) + { + if(!is.null(y$options)) x$options <- modifyList(x$options, y$options) + if(!is.null(y$headers)) x$headers[names(y$headers)] <- y$headers + if(!is.null(y$fields)) x$fields[names(y$fields)] <- y$fields + } + x } .curlUploadFile <- function(path, @@ -42,13 +54,6 @@ as.character.form_file <- function(x, ...) x -.curlTimeout <- function(seconds) -{ - if (seconds < 0.001) stop("Timeout cannot be less than 1 ms", call. = FALSE) - - .curlConfig(timeout_ms = seconds * 1000) -} - .curlContent <- function(x, type = 'text/plain', ...) @@ -85,65 +90,18 @@ as.character.form_file <- function(x, ...) x } } -.curlDefaultUa <- function() -{ - # cache this? - versions <- c(libcurl = curl::curl_version()$version, `r-curl` = as.character(utils::packageVersion("curl"))) - paste0(names(versions), "/", versions, collapse = " ") -} - -.curlRequestCombine <- function(x, - y) -{ - z <- structure(list( - method = NULL, - url = NULL, - headers = NULL, - fields = c(x$fields, y$fields), - options = NULL, - auth_token = NULL, - output = NULL - ), class = "request") - h <- c(x$headers, y$headers) - o <- c(x$options, y$options) - z$headers <- h[!duplicated(names(h), fromLast = TRUE)] - z$options <- o[!duplicated(names(o), fromLast = TRUE)] - for(i in c('method','url','auth_token','output')) - { - if(!is.null(y[[i]])) - { - z[[i]] <- y[[i]] - } else if(!is.null(x[[i]])) - { - z[[i]] <- x[[i]] - } - } - z -} - -.curlRequestDefault <- function() -{ - dr <- structure(list( - method = NULL, - url = NULL, - headers = c(Accept = "application/json, text/xml, application/xml, */*"), - fields = NULL, - options = list(useragent = .curlDefaultUa()), - auth_token = NULL, - output = structure(list(), class = c("write_memory", "write_function")) - ), class = "request") - .curlRequestCombine(dr, getOption("httr_config")) -} - -.curlPost <- function(url, - body, - config = list()) +.curlPost <- function(body, + config) { h <- curl::new_handle() body <- .curlCompact(body) - nms <- names(body) - if(is.null(nms) || any(is.na(nms) | nms == '')) - stop("All components of body must be named", call. = FALSE) + + # Argument Validation --------------------------------------------- + coll <- checkmate::makeAssertCollection() + checkmate::assert_list(x = body, + names = "named", + add = coll) + checkmate::reportAssertions(coll) flds <- lapply(body, function(x) { @@ -155,26 +113,16 @@ as.character.form_file <- function(x, ...) x as.character(x) } }) + + config$fields <- c(flds, config$fields) - req <- structure(list( - method = "POST", - url = url, - headers = config$headers, - fields = c(flds, config$fields), - options = config$options, - auth_token = config$auth_token, - output = config$output - ), class = "request") - req <- .curlRequestCombine(.curlRequestDefault(), req) - req$options$post <- TRUE - - curl::handle_setopt(h, .list = req$options) - if (!is.null(req$fields)) curl::handle_setform(h, .list = req$fields) + curl::handle_setopt(h, .list = config$options) + if (!is.null(config$fields)) curl::handle_setform(h, .list = config$fields) - curl::handle_setheaders(h, .list = req$headers) + curl::handle_setheaders(h, .list = config$headers) on.exit(curl::handle_reset(h), add = TRUE) - resp <- curl::curl_fetch_memory(req$url, h) + resp <- curl::curl_fetch_memory(config$url, h) rh <- curl::parse_headers_list(resp$headers) structure(list( url = resp$url, @@ -184,7 +132,7 @@ as.character.form_file <- function(x, ...) x cookies = curl::handle_cookies(h), content = resp$content, times = resp$times, - request = req, + request = config, handle = h ), class = "response") } diff --git a/R/makeApiCall.R b/R/makeApiCall.R index 91a67560..beaf9450 100644 --- a/R/makeApiCall.R +++ b/R/makeApiCall.R @@ -181,19 +181,18 @@ makeApiCall <- function(rcon, body <- utils::modifyList(body, list(token = rcon$token)) body <- utils::modifyList(body, api_param) body <- body[lengths(body) > 0] - - config <- utils::modifyList(rcon$config, config) + + config <- .curlMergeConfig(rcon$config, config) + if(!is.null(url)) config$url <- url # Functional Code ------------------------------------------------- - if(is.null(url)) url <- rcon$url - for (i in seq_len(rcon$retries())) { response <- tryCatch( { - .curlPost(url = url, body = body, config = config) + .curlPost(body = body, config = config) }, error=function(e) { @@ -212,12 +211,10 @@ makeApiCall <- function(rcon, } }) - httr_config <- getOption("httr_config") - if(!is.null(httr_config) && - "options" %in% names(httr_config) && - "verbose" %in% names(httr_config$options) && - is.logical(httr_config$options$verbose) && - httr_config$options$verbose + if("options" %in% names(config) && + "verbose" %in% names(config$options) && + is.logical(config$options$verbose) && + config$options$verbose ) { message(paste0(">>>\n", as.character(response), "<<<\n")) diff --git a/R/redcapConnection.R b/R/redcapConnection.R index 80adcf84..8c81842a 100644 --- a/R/redcapConnection.R +++ b/R/redcapConnection.R @@ -170,7 +170,7 @@ redcapConnection <- function(url = getOption('redcap_api_url'), token, - config = .get_httr_config(), + config = NULL, retries = 5, retry_interval = 2^(seq_len(retries)), retry_quietly = TRUE) @@ -187,7 +187,8 @@ redcapConnection <- function(url = getOption('redcap_api_url'), checkmate::assert_list(x = config, names = 'named', - add = coll) + add = coll, + null.ok=TRUE) checkmate::assert_integerish(x = retries, len = 1, @@ -207,6 +208,9 @@ redcapConnection <- function(url = getOption('redcap_api_url'), checkmate::reportAssertions(coll) + config <- if(is.null(config)) .curlConfig(url, token) else + .curlMergeConfig(.curlConfig(url, token), config) + u <- url t <- token this_metadata <- NULL @@ -1054,11 +1058,3 @@ print.redcapOfflineConnection <- function(x, ...){ file } } - -.get_httr_config <- function() -{ - config <- .curlConfig() - class(config) <- "list" - - config[lengths(config) > 0] -} diff --git a/R/zzz.R b/R/zzz.R index 88fda393..ebea9145 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -1,20 +1,7 @@ packageStartupMessage( "A future release of redcapAPI 3.0.0 will introduce several breaking changes \n", - "* The `exportRecords` function interface will be replaced. Please switch your processes to `exportRecordsTyped`\n", - "* The `exportReports` function interface will be replaced. Please switch your processes to `exportReportsTyped`\n", - "* The `importRecords` function interface will be replaced to utilize `castForImport` to prepare data for import.\n ", - "* The `redcapFactor` class is being discontinued with all its supporting methods (including `redcapFactorFlip`).\n", - "* The `exportProjectInfo` and `exportBundle` functions are being discontinued. Their functionality is replaced by caching values on the connection object.\n", - "See NEWS for more details." -) - -.onLoad <- function(libname,pkgname) -{ - # Set the time out to five minutes (300 seconds) - # If a setting had already existed for timeout_ms, restore it. - # We do not want to disrupt the user's settings - old <- .curlSetConfig(.curlTimeout(300)) - if (!is.null(old$options$timeout_ms) && old$options$timeout_ms != 3e+05){ - .curlSetConfig(old) - } -} + "* The `exportRecords` function interface is deprecated. Please switch your processes to `exportRecordsTyped`\n", + "* The `exportReports` function interface is deprecated. Please switch your processes to `exportReportsTyped`\n", + "* The `importRecords` function interface will be changed to utilize `castForImport` to prepare data for import.\n", + "* The `exportProjectInfo` and `exportBundle` functions are deprecated. Their functionality is replaced by cached values on the connection object.\n" +) \ No newline at end of file diff --git a/tests/testthat/test-001-packageSetup.R b/tests/testthat/test-001-packageSetup.R index 7af630b2..403e00a6 100644 --- a/tests/testthat/test-001-packageSetup.R +++ b/tests/testthat/test-001-packageSetup.R @@ -3,12 +3,8 @@ context("Test package setup") test_that( "Default timeout set to 5 minutes (300 seconds / 30,000 milliseconds)", { - old <- .curlSetConfig(.curlTimeout(500)) - - expect_equal(old$options$timeout_ms, + expect_equal(rcon$config$options$timeout_ms, 3e+05) - - .curlSetConfig(old) } ) @@ -17,7 +13,7 @@ test_that( { this_conn <- redcapConnection(url = rcon$url, token = rcon$token, - config = .curlConfig(timeout_ms = 5e+05)) + config = list(options=list(timeout_ms = 5e+05))) default_response <- makeApiCall(rcon, body = list(content = "metadata", @@ -42,7 +38,7 @@ test_that( { this_conn <- redcapConnection(url = rcon$url, token = rcon$token, - config = .curlConfig(timeout_ms = 5e+05)) + config = list(options=list(timeout_ms = 5e+05))) default_response <- makeApiCall(rcon, body = list(content = "metadata", @@ -53,7 +49,7 @@ test_that( body = list(content = "metadata", return = "csv", returnFormat = "csv"), - config = .curlConfig(timeout_ms = 4e+05)) + config = list(options=list(timeout_ms = 4e+05))) expect_equal(default_response$request$options$timeout_ms, 3e+05) From 69ca7ab14085cc8363723e4b2090d27c2f256a87 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Wed, 24 Jul 2024 15:17:51 -0500 Subject: [PATCH 17/18] Updating gitlab CI #397 --- .gitlab-ci.yml | 2 +- man/redcapConnection.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d581444b..d05017f9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,5 +10,5 @@ test: - cp $KEYRING tests/testthat.yml - apt-get update - apt-get install -y libsecret-1-dev libsodium-dev - - R --no-save -e "install.packages(c('devtools','checkmate','chron','curl','labelVector','lubridate','keyring','getPass','yaml','Hmisc','mockery'))" + - R --no-save -e "install.packages(c('devtools','checkmate','chron','curl','labelVector','lubridate','keyring','getPass','yaml','Hmisc','mockery','mime','jsonlite'))" - R --no-save -e "Sys.setenv(CI=1); devtools::test(stop_on_failure=TRUE)" diff --git a/man/redcapConnection.Rd b/man/redcapConnection.Rd index 4dc3c6b2..8001fffb 100644 --- a/man/redcapConnection.Rd +++ b/man/redcapConnection.Rd @@ -10,7 +10,7 @@ redcapConnection( url = getOption("redcap_api_url"), token, - config = .get_httr_config(), + config = NULL, retries = 5, retry_interval = 2^(seq_len(retries)), retry_quietly = TRUE From 459a6d4ece6ca0409c5aedc6165dd6c060b224b4 Mon Sep 17 00:00:00 2001 From: Shawn Garbett Date: Wed, 31 Jul 2024 11:54:54 -0500 Subject: [PATCH 18/18] Minor documentation cleanup #397 --- R/makeApiCall.R | 7 ++++--- man/makeApiCall.Rd | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/R/makeApiCall.R b/R/makeApiCall.R index beaf9450..e3f7cebb 100644 --- a/R/makeApiCall.R +++ b/R/makeApiCall.R @@ -7,7 +7,7 @@ #' execute calls for new REDCap features that are not yet implemented. #' #' @inheritParams common-rcon-arg -#' @param body `list` List of parameters to be passed to [httr::POST()]'s +#' @param body `list` List of parameters to be passed to [curl::]'s #' `body` argument #' @param url `character(1)` A url string to hit. Defaults to rcon$url. #' @param success_status_codes `integerish` A vector of success codes to ignore @@ -28,8 +28,9 @@ #' `vectorToApiBodyList`; options that are not an array can be entered #' directly (see examples). #' -#' The config list is a list of parameters to pass to [curl::handle_setopt]. -#' Refer to documentation there for details. +#' The config list is a list of parameter overrides that reflect the curl +#' request object. The most commonly used elements of this list +#' is `options` or maybe `headers`. #' #' Using the settings stored in the `redcapConnection` object, a response #' code of 408 (Request Timeout), 500 (Internal Server Error), diff --git a/man/makeApiCall.Rd b/man/makeApiCall.Rd index 99e6766f..307271ab 100644 --- a/man/makeApiCall.Rd +++ b/man/makeApiCall.Rd @@ -9,7 +9,7 @@ makeApiCall(rcon, body = list(), url = NULL, success_status_codes = 200L, ...) \arguments{ \item{rcon}{A \code{redcapConnection} object.} -\item{body}{\code{list} List of parameters to be passed to \code{\link[httr:POST]{httr::POST()}}'s +\item{body}{\code{list} List of parameters to be passed to \link[curl:curl]{curl::curl}'s \code{body} argument} \item{url}{\code{character(1)} A url string to hit. Defaults to rcon$url.} @@ -41,8 +41,9 @@ options to the API that require an array need to be built using \code{vectorToApiBodyList}; options that are not an array can be entered directly (see examples). -The config list is a list of parameters to pass to \link[curl:handle]{curl::handle_setopt}. -Refer to documentation there for details. +The config list is a list of parameter overrides that reflect the curl +request object. The most commonly used elements of this list +is \code{options} or maybe \code{headers}. Using the settings stored in the \code{redcapConnection} object, a response code of 408 (Request Timeout), 500 (Internal Server Error),