Functions to query or manipulate the registry of credential functions
consulted by token_fetch().
Usage
cred_funs_list()
cred_funs_add(...)
cred_funs_set(funs, ls = deprecated())
cred_funs_clear()
cred_funs_list_default()
cred_funs_set_default()
local_cred_funs(
  funs = cred_funs_list_default(),
  action = c("replace", "modify"),
  .local_envir = caller_env()
)
with_cred_funs(
  funs = cred_funs_list_default(),
  code,
  action = c("replace", "modify")
)Arguments
- ...
 <
dynamic-dots> One or more credential functions, inname = valueform. Each credential function is subject to a superficial check that it at least "smells like" a credential function: its first argument must be namedscopes, and its signature must include.... To remove a credential function, you can use a specification likename = NULL.- funs
 A named list of credential functions.
- ls
 - action
 Whether to use
funsto replace or modify the registry with funs:"replace"doescred_funs_set(funs)"modify"doescred_funs_add(!!!funs)
- .local_envir
 The environment to use for scoping. Defaults to current execution environment.
- code
 Code to run with temporary credential function registry.
Functions
cred_funs_list(): Get the list of registered credential functions.cred_funs_add(): Register one or more new credential fetching functions. Function(s) are added to the front of the list. So:"First registered, last tried."
"Last registered, first tried."
Can also be used to remove a function from the registry.
cred_funs_set(): Register a list of credential fetching functions.cred_funs_clear(): Clear the credential function registry.cred_funs_list_default(): Return the default list of credential functions.cred_funs_set_default(): Reset the registry to the gargle default.local_cred_funs(): Modify the credential function registry in the current scope. It is an example of thelocal_*()functions in withr.with_cred_funs(): Evaluatecodewith a temporarily modified credential function registry. It is an example of thewith_*()functions in withr.
See also
token_fetch(), which is where the registry is actually used.
Examples
names(cred_funs_list())
#> [1] "credentials_byo_oauth2"       "credentials_service_account" 
#> [3] "credentials_external_account" "credentials_app_default"     
#> [5] "credentials_gce"              "credentials_user_oauth2"     
creds_one <- function(scopes, ...) {}
cred_funs_add(one = creds_one)
cred_funs_add(two = creds_one, three = creds_one)
names(cred_funs_list())
#> [1] "three"                        "two"                         
#> [3] "one"                          "credentials_byo_oauth2"      
#> [5] "credentials_service_account"  "credentials_external_account"
#> [7] "credentials_app_default"      "credentials_gce"             
#> [9] "credentials_user_oauth2"     
cred_funs_add(two = NULL)
names(cred_funs_list())
#> [1] "three"                        "one"                         
#> [3] "credentials_byo_oauth2"       "credentials_service_account" 
#> [5] "credentials_external_account" "credentials_app_default"     
#> [7] "credentials_gce"              "credentials_user_oauth2"     
# restore the default list
cred_funs_set_default()
# remove one specific credential fetcher
cred_funs_add(credentials_gce = NULL)
names(cred_funs_list())
#> [1] "credentials_byo_oauth2"       "credentials_service_account" 
#> [3] "credentials_external_account" "credentials_app_default"     
#> [5] "credentials_user_oauth2"     
# force the use of one specific credential fetcher
cred_funs_set(list(credentials_user_oauth2 = credentials_user_oauth2))
names(cred_funs_list())
#> [1] "credentials_user_oauth2"
# restore the default list
cred_funs_set_default()
# run some code with a temporary change to the registry
# creds_one ONLY
with_cred_funs(
  list(one = creds_one),
  names(cred_funs_list())
)
#> [1] "one"
# add creds_one to the list
with_cred_funs(
  list(one = creds_one),
  names(cred_funs_list()),
  action = "modify"
)
#> [1] "one"                          "credentials_byo_oauth2"      
#> [3] "credentials_service_account"  "credentials_external_account"
#> [5] "credentials_app_default"      "credentials_gce"             
#> [7] "credentials_user_oauth2"     
# remove credentials_gce
with_cred_funs(
  list(credentials_gce = NULL),
  names(cred_funs_list()),
  action = "modify"
)
#> [1] "credentials_byo_oauth2"       "credentials_service_account" 
#> [3] "credentials_external_account" "credentials_app_default"     
#> [5] "credentials_user_oauth2"