| gh {gh} | R Documentation |
Minimal wrapper to access GitHub's API.
This is an extremely minimal client. You need to know the API to be able to use this client. All this function does is:
Try to substitute each listed parameter into
endpoint, using the :parameter notation.
If a GET request (the default), then add all other listed parameters as query parameters.
If not a GET request, then send the other parameters in the request body, as JSON.
Convert the response to an R list using
jsonlite::fromJSON.
gh(endpoint, ..., .token = NULL, .api_url = NULL, .method = "GET", .limit = NULL, .send_headers = NULL)
endpoint |
GitHub API endpoint. Must be one of the following forms:
If the method is not supplied, will use |
... |
Name-value pairs giving API parameters. Will be matched
into |
.token |
Authentication token. |
.api_url |
Github API url (default: https://api.github.com).
Used if |
.method |
HTTP method to use if not explicitly supplied in the
|
.limit |
Number of records to return. This can be used
instead of manual pagination. By default it is |
.send_headers |
Named character vector of header field values
(excepting |
Answer from the API as a gh_response object, which is also a
list. Failed requests will generate an R error.
gh_whoami() for details on GitHub API token
management.
## Not run:
## Repositories of a user, these are equivalent
gh("/users/hadley/repos")
gh("/users/:username/repos", username = "hadley")
## Starred repositories of a user
gh("/users/hadley/starred")
gh("/users/:username/starred", username = "hadley")
## Create a repository, needs a token in GITHUB_PAT (or GITHUB_TOKEN)
## environment variable
gh("POST /user/repos", name = "foobar")
## Issues of a repository
gh("/repos/hadley/dplyr/issues")
gh("/repos/:owner/:repo/issues", owner = "hadley", repo = "dplyr")
## Automatic pagination
users <- gh("/users", .limit = 50)
length(users)
## Access developer preview of Licenses API (in preview as of 2015-09-24)
gh("/licenses") # error code 415
gh("/licenses",
.send_headers = c("Accept" = "application/vnd.github.drax-preview+json"))
## Access Github Enterprise API
gh("/user/repos", type = "public", .api_url = "https://github.foobar.edu/api/v3")
## Use I() to force body part to be sent as an array, even if length 1
## This works whether assignees has length 1 or > 1
assignees <- "gh_user"
assignees <- c("gh_user1", "gh_user2")
gh("PATCH /repos/OWNER/REPO/issues/1", assignees = I(assignees))
## End(Not run)