From bd040505e34d2aaf1d4f97f4c6731dc9542775a9 Mon Sep 17 00:00:00 2001 From: Jon Harmon Date: Thu, 25 Apr 2024 11:02:16 -0500 Subject: [PATCH] Export function-applier. --- DESCRIPTION | 3 +- NAMESPACE | 1 + R/aaa_shared.R | 2 + R/call.R | 18 +------- R/perform.R | 5 ++ R/req.R | 9 +--- R/resp.R | 31 +++++++++---- R/{security.R => security_api_key.R} | 0 R/utils.R | 41 +++++++++++++++++ man/do_if_defined.Rd | 43 ++++++++++++++++++ man/dot-security_api_key_cookie.Rd | 2 +- man/dot-security_api_key_header.Rd | 2 +- man/dot-shared-parameters.Rd | 3 ++ man/req_perform_opinionated.Rd | 8 ++-- man/security_api_key.Rd | 2 +- tests/testthat/fixtures/raw_resps.rds | Bin 0 -> 70114 bytes tests/testthat/test-resp.R | 15 ++++++ ...est-security.R => test-security_api_key.R} | 0 18 files changed, 143 insertions(+), 42 deletions(-) rename R/{security.R => security_api_key.R} (100%) create mode 100644 man/do_if_defined.Rd create mode 100644 tests/testthat/fixtures/raw_resps.rds rename tests/testthat/{test-security.R => test-security_api_key.R} (100%) diff --git a/DESCRIPTION b/DESCRIPTION index 951ef56..b2bf8b7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -20,7 +20,8 @@ Imports: jsonlite, purrr, rlang, - stbl + stbl, + vctrs Suggests: covr, testthat (>= 3.0.0) diff --git a/NAMESPACE b/NAMESPACE index 4659127..435c278 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -7,6 +7,7 @@ S3method(resp_parse,httr2_response) S3method(resp_parse,list) export(call_api) export(compact_nested_list) +export(do_if_defined) export(req_perform_opinionated) export(req_prepare) export(resp_parse) diff --git a/R/aaa_shared.R b/R/aaa_shared.R index c6d85d7..1639197 100644 --- a/R/aaa_shared.R +++ b/R/aaa_shared.R @@ -24,6 +24,8 @@ #' @param response_parser A function to parse the server response (`resp`). #' Defaults to [httr2::resp_body_json()], since JSON responses are common. Set #' this to `NULL` to return the raw response from [httr2::req_perform()]. +#' @param response_parser_args An optional list of arguments to pass to the +#' `response_parser` function (in addition to `resp`). #' @param security_fn A function to use to authenticate the request. By default #' (`NULL`), no authentication is performed. #' @param security_args An optional list of arguments to the `security_fn` diff --git a/R/call.R b/R/call.R index 47f433a..1ccf024 100644 --- a/R/call.R +++ b/R/call.R @@ -8,13 +8,6 @@ #' #' @inheritParams .shared-parameters #' @inheritParams req_perform_opinionated -#' @param response_parser_args An optional list of arguments to pass to the -#' `response_parser` function (in addition to `resp`). -#' @param next_req An optional function that takes the previous response -#' (`resp`) to generate the next request in a call to -#' [httr2::req_perform_iterative()]. This function can usually be generated -#' using one of the iteration helpers described in -#' [httr2::iterate_with_offset()]. #' #' @return The response from the API, parsed by the `response_parser`. #' @export @@ -41,7 +34,7 @@ call_api <- function(base_url, method = method, user_agent = user_agent ) - req <- .req_security_apply(req, security_fn, security_args) + req <- do_if_defined(req, security_fn, !!!security_args) resp <- req_perform_opinionated( req, next_req = next_req, @@ -55,12 +48,3 @@ call_api <- function(base_url, ) return(resp) } - -.req_security_apply <- function(req, security_fn, security_args) { - if (length(security_fn)) { - req <- rlang::inject( - security_fn(req, !!!security_args) - ) - } - return(req) -} diff --git a/R/perform.R b/R/perform.R index e8761bd..e3b2b9b 100644 --- a/R/perform.R +++ b/R/perform.R @@ -7,6 +7,11 @@ #' @inheritParams .shared-parameters #' @inheritParams httr2::req_perform_iterative #' @inheritParams rlang::args_dots_empty +#' @param next_req An optional function that takes the previous response +#' (`resp`) to generate the next request in a call to +#' [httr2::req_perform_iterative()]. This function can usually be generated +#' using one of the iteration helpers described in +#' [httr2::iterate_with_offset()]. #' @param max_reqs The maximum number of separate requests to perform. Passed to #' the max_reqs argument of [httr2::req_perform_iterative()] when `next_req` #' is supplied. The default `2` should likely be changed to `Inf` after you diff --git a/R/req.R b/R/req.R index dc08f2c..a50234f 100644 --- a/R/req.R +++ b/R/req.R @@ -23,7 +23,7 @@ req_prepare <- function(base_url, req <- .req_query_flatten(req, query) req <- .req_body_auto(req, body, mime_type) req <- .req_method_apply(req, method) - req <- .req_user_agent_apply(req, user_agent) + req <- httr2::req_user_agent(req, user_agent) return(req) } @@ -46,10 +46,3 @@ req_prepare <- function(base_url, } return(httr2::req_method(req, method)) } - -.req_user_agent_apply <- function(req, user_agent) { - if (length(user_agent)) { - req <- httr2::req_user_agent(req, user_agent) - } - return(req) -} diff --git a/R/resp.R b/R/resp.R index 103f678..0516f16 100644 --- a/R/resp.R +++ b/R/resp.R @@ -48,22 +48,33 @@ resp_parse.default <- function(resp, resp_parse.httr2_response <- function(resp, ..., response_parser = httr2::resp_body_json) { - if (length(response_parser)) { - # Higher-level calls can include !!!'ed arguments. - dots <- rlang::list2(...) - return(rlang::inject(response_parser(resp, !!!dots))) - } - return(resp) + do_if_defined(resp, response_parser, ...) } #' @export resp_parse.list <- function(resp, ..., response_parser = httr2::resp_body_json) { - httr2::resps_data( + resp_parsed <- .resp_parse_impl(resp, response_parser, ...) + .resp_combine(resp_parsed) +} + +.resp_parse_impl <- function(resp, response_parser, ...) { + # httr2::resps_data concatenates raw vectors, which is almost certainly not + # what users would want. For example, images get combined to be on top of one + # another. + lapply( httr2::resps_successes(resp), - resp_data = function(resp) { - resp_parse(resp, response_parser = response_parser, ...) - } + resp_parse, + response_parser = response_parser, + ... ) } + +.resp_combine <- function(resp_parsed) { + purrr::discard(resp_parsed, is.null) + if (inherits(resp_parsed[[1]], "raw")) { + return(resp_parsed) + } + vctrs::list_unchop(resp_parsed) +} diff --git a/R/security.R b/R/security_api_key.R similarity index 100% rename from R/security.R rename to R/security_api_key.R diff --git a/R/utils.R b/R/utils.R index 08d03e2..a5830d7 100644 --- a/R/utils.R +++ b/R/utils.R @@ -62,3 +62,44 @@ url_path_append <- function(url, ...) { path <- gsub("/+", "/", path) return(sub("/$", "", path)) } + +#' Use a provided function +#' +#' When constructing API calls programmatically, you may encounter situations +#' where an upstream task should indicate which function to apply. For example, +#' one endpoint might use a special security function that isn't used by other +#' endpoints. This function exists to make coding such situations easier. +#' +#' @param x An object to potentially modify, such as an [httr2::request()] +#' object. +#' @param fn A function to apply to `x`. If `fn` is `NULL`, `x` is returned +#' unchanged. +#' @param ... Additional arguments to pass to `fn`. +#' +#' @return The object, potentially modified. +#' @export +#' +#' @examples +#' build_api_req <- function(endpoint, security_fn = NULL, ...) { +#' req <- httr2::request("https://example.com") +#' req <- httr2::req_url_path_append(req, endpoint) +#' do_if_defined(req, security_fn, ...) +#' } +#' +#' # Most endpoints of this API do not require authentication. +#' unsecure_req <- build_api_req("unsecure_endpoint") +#' unsecure_req$headers +#' +#' # But one endpoint requires +#' secure_req <- build_api_req( +#' "secure_endpoint", httr2::req_auth_bearer_token, "secret-token" +#' ) +#' secure_req$headers$Authorization +do_if_defined <- function(x, fn = NULL, ...) { + if (is.function(fn)) { + # Higher-level calls can include !!!'ed arguments. + dots <- rlang::list2(...) + x <- rlang::inject(fn(x, !!!dots)) + } + return(x) +} diff --git a/man/do_if_defined.Rd b/man/do_if_defined.Rd new file mode 100644 index 0000000..403ef89 --- /dev/null +++ b/man/do_if_defined.Rd @@ -0,0 +1,43 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils.R +\name{do_if_defined} +\alias{do_if_defined} +\title{Use a provided function} +\usage{ +do_if_defined(x, fn = NULL, ...) +} +\arguments{ +\item{x}{An object to potentially modify, such as an \code{\link[httr2:request]{httr2::request()}} +object.} + +\item{fn}{A function to apply to \code{x}. If \code{fn} is \code{NULL}, \code{x} is returned +unchanged.} + +\item{...}{Additional arguments to pass to \code{fn}.} +} +\value{ +The object, potentially modified. +} +\description{ +When constructing API calls programmatically, you may encounter situations +where an upstream task should indicate which function to apply. For example, +one endpoint might use a special security function that isn't used by other +endpoints. This function exists to make coding such situations easier. +} +\examples{ +build_api_req <- function(endpoint, security_fn = NULL, ...) { + req <- httr2::request("https://example.com") + req <- httr2::req_url_path_append(req, endpoint) + do_if_defined(req, security_fn, ...) +} + +# Most endpoints of this API do not require authentication. +unsecure_req <- build_api_req("unsecure_endpoint") +unsecure_req$headers + +# But one endpoint requires +secure_req <- build_api_req( + "secure_endpoint", httr2::req_auth_bearer_token, "secret-token" +) +secure_req$headers$Authorization +} diff --git a/man/dot-security_api_key_cookie.Rd b/man/dot-security_api_key_cookie.Rd index fb6816f..3c361d0 100644 --- a/man/dot-security_api_key_cookie.Rd +++ b/man/dot-security_api_key_cookie.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/security.R +% Please edit documentation in R/security_api_key.R \name{.security_api_key_cookie} \alias{.security_api_key_cookie} \title{Authenticate with an API key in a cookie} diff --git a/man/dot-security_api_key_header.Rd b/man/dot-security_api_key_header.Rd index 1af2cf8..9ba04bd 100644 --- a/man/dot-security_api_key_header.Rd +++ b/man/dot-security_api_key_header.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/security.R +% Please edit documentation in R/security_api_key.R \name{.security_api_key_header} \alias{.security_api_key_header} \title{Authenticate with an API key in the header of the request} diff --git a/man/dot-shared-parameters.Rd b/man/dot-shared-parameters.Rd index ce594e6..f949cd7 100644 --- a/man/dot-shared-parameters.Rd +++ b/man/dot-shared-parameters.Rd @@ -36,6 +36,9 @@ the request.} Defaults to \code{\link[httr2:resp_body_raw]{httr2::resp_body_json()}}, since JSON responses are common. Set this to \code{NULL} to return the raw response from \code{\link[httr2:req_perform]{httr2::req_perform()}}.} +\item{response_parser_args}{An optional list of arguments to pass to the +\code{response_parser} function (in addition to \code{resp}).} + \item{security_fn}{A function to use to authenticate the request. By default (\code{NULL}), no authentication is performed.} diff --git a/man/req_perform_opinionated.Rd b/man/req_perform_opinionated.Rd index cca7792..ea7dcdf 100644 --- a/man/req_perform_opinionated.Rd +++ b/man/req_perform_opinionated.Rd @@ -17,9 +17,11 @@ req_perform_opinionated( \item{...}{These dots are for future extensions and must be empty.} -\item{next_req}{A function that takes the previous response (\code{resp}) and -request (\code{req}) and returns a \link[httr2]{request} for the next page or \code{NULL} if -the iteration should terminate. See below for more details.} +\item{next_req}{An optional function that takes the previous response +(\code{resp}) to generate the next request in a call to +\code{\link[httr2:req_perform_iterative]{httr2::req_perform_iterative()}}. This function can usually be generated +using one of the iteration helpers described in +\code{\link[httr2:iterate_with_offset]{httr2::iterate_with_offset()}}.} \item{max_reqs}{The maximum number of separate requests to perform. Passed to the max_reqs argument of \code{\link[httr2:req_perform_iterative]{httr2::req_perform_iterative()}} when \code{next_req} diff --git a/man/security_api_key.Rd b/man/security_api_key.Rd index f027817..dd20aea 100644 --- a/man/security_api_key.Rd +++ b/man/security_api_key.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/security.R +% Please edit documentation in R/security_api_key.R \name{security_api_key} \alias{security_api_key} \title{Authenticate with an API key} diff --git a/tests/testthat/fixtures/raw_resps.rds b/tests/testthat/fixtures/raw_resps.rds new file mode 100644 index 0000000000000000000000000000000000000000..0368228f75047a4ce1aa21c8e168ce4c5ca6c63e GIT binary patch literal 70114 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 {z+pq2s6 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/test-resp.R b/tests/testthat/test-resp.R index 3834386..57db4d7 100644 --- a/tests/testthat/test-resp.R +++ b/tests/testthat/test-resp.R @@ -62,3 +62,18 @@ test_that("resp_parse parses lists of httr2_responses", { test_result <- resp_parse(mock_response, response_parser = parser) expect_identical(test_result, 1:6) }) + +test_that("resp_parse works for raw results", { + # reqs <- list( + # httr2::request("https://httr2.r-lib.org/logo.png"), + # httr2::request("https://docs.ropensci.org/magick/logo.png") + # ) + # resps <- httr2::req_perform_sequential(reqs) + # saveRDS(resps, testthat::test_path("fixtures", "raw_resps.rds")) + resps <- readRDS(testthat::test_path("fixtures", "raw_resps.rds")) + test_result <- resp_parse( + resps, + response_parser = httr2::resp_body_raw + ) + expect_equal(length(test_result), length(resps)) +}) diff --git a/tests/testthat/test-security.R b/tests/testthat/test-security_api_key.R similarity index 100% rename from tests/testthat/test-security.R rename to tests/testthat/test-security_api_key.R