Learn R Programming

gargle

The goal of gargle is to take some of the agonizing pain out of working with Google APIs. This includes functions and classes for handling common credential types and for preparing, executing, and processing HTTP requests.

The target user of gargle is an R package author who is wrapping one of the ~250 Google APIs listed in the APIs Explorer. gargle aims to play roughly the same role as Google’s official client libraries, but for R. gargle may also be useful to useRs making direct calls to Google APIs, who are prepared to navigate the details of low-level API access.

gargle’s functionality falls into two main domains:

  • Auth. The token_fetch() function calls a series of concrete credential-fetching functions to obtain a valid access token (or it quietly dies trying).
    • This covers explicit service accounts, application default credentials, Google Compute Engine, (experimentally) workload identity federation, and the standard OAuth2 browser flow.
    • gargle offers the Gargle2.0 class, which extends httr::Token2.0. It is the default class for user OAuth 2.0 credentials. There are two main differences from httr::Token2.0: greater emphasis on the user’s email (e.g. Google identity) and default token caching is at the user level.
  • Requests and responses. A family of functions helps to prepare HTTP requests, (possibly with reference to an API spec derived from a Discovery Document), make requests, and process the response.

See the articles for holistic advice on how to use gargle.

Installation

You can install the released version of gargle from CRAN with:

install.packages("gargle")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("r-lib/gargle")

Basic usage

gargle is a low-level package and does not do anything visibly exciting on its own. But here’s a bit of usage in an interactive scenario where a user confirms they want to use a specific Google identity and loads an OAuth2 token.

library(gargle)

token <- token_fetch()
#> The gargle package is requesting access to your Google account. Select a
#> pre-authorised account or enter '0' to obtain a new token. Press
#> Esc/Ctrl + C to abort.

#> 1: janedoe_personal@gmail.com
#> 2: janedoe@example.com

#> Selection: 1

token
#> <Token (via gargle)>
#>   <oauth_endpoint> google
#>              <app> gargle-demo
#>            <email> janedoe_personal@gmail.com
#>           <scopes> ...userinfo.email
#>      <credentials> access_token, expires_in, refresh_token, scope, ...

Here’s an example of using request and response helpers to make a one-off request to the Web Fonts Developer API. We show the most popular web font families served by Google Fonts.

library(gargle)

req <- request_build(
  method = "GET",
  path = "webfonts/v1/webfonts",
  params = list(
    sort = "popularity"
  ),
  key = gargle_api_key(),
  base_url = "https://www.googleapis.com"
)
resp <- request_make(req)
out <- response_process(resp)

out <- out[["items"]][1:8]
sort(vapply(out, function(x) x[["family"]], character(1)))
#> [1] "Lato"             "Montserrat"       "Noto Sans JP"     "Open Sans"       
#> [5] "Poppins"          "Roboto"           "Roboto Condensed" "Source Sans Pro"

Please note that the ‘gargle’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Privacy policy

Copy Link

Version

Install

install.packages('gargle')

Monthly Downloads

672,171

Version

1.2.1

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

September 8th, 2022

Functions in gargle (1.2.1)

credentials_byo_oauth2

Load a user-provided token
bulletize

Abbreviate a bullet list neatly
cred_funs

Credential function registry
credentials_gce

Get a token for Google Compute Engine
credentials_app_default

Load Application Default Credentials
AuthState-class

Authorization state
GceToken

Token for use on Google Compute Engine instances
gargle_oauth_sitrep

OAuth token situation report
credentials_service_account

Load a service account token
credentials_external_account

Get a token for an external account
Gargle-class

OAuth2 token objects specific to Google APIs
credentials_user_oauth2

Get an OAuth token for a user
field_mask

Generate a field mask
gargle2.0_token

Generate a gargle token
gargle_options

Options consulted by gargle
gargle-package

gargle: Utilities for Working with Google APIs
gargle_map_cli

Map a cli-styled template over an object
gargle_app

OAuth app for demonstration purposes
gargle_api_key

API key for demonstration purposes
WifToken

Token for use with workload identity federation
request_develop

Build a Google API request
request_make

Make a Google API request
oauth_app_from_json

Create an OAuth app from JSON
oauth_external_token

Generate OAuth token for an external account.
token-info

Get info from a token
request_retry

Make a Google API request, repeatedly
response_process

Process a Google API response
token_fetch

Fetch a token for the given scopes
init_AuthState

Create an AuthState
internal-assets

Assets for internal use