Releases: r-lib/httr
httr 1.4.7
httr 1.4.6
- Supress use of httpbin in examples and tests because it has become
unreliable.
httr 1.4.5
httr 1.4.4
- Fix intermittent failing test.
httr 1.4.3
- Fix failing test.
httr 1.4.2
httr 1.4.1
-
Remove the default
cainfooption on Windows. Providing a CA bundle is not
needed anymore becausecurlnow uses the native schannel SSL backend.
For recent versions of libcurl, overriding the CA bundle actually breaks
custom trust certificates on corporate networks. (@jeroen, #603) -
http_status()now throws the correct error message if http status code is
not in the list of known codes (@Javdat, #567). -
POST()gains an example on how to useencode = "raw"for specific json
string body (@cderv, #563) -
RETRY()now throws the correct error message if an error occurs during the
request (@austin3dickey, #581).
httr 1.4.0
OAuth
OAuth2.0 has been made somewhat more flexible in order to support more websites:
-
init_oauth2.0()passesuse_basic_authonwards, enabling
basic authentication for OAuth 2.0 (@peterhartman, #484). -
oauth2.0_token()(andinit_oauth2.0()) gains aoob_valueargument
that been allows arbitrary values to be sent for therequest_uri
parameter during OOB flows (@ctrombley, #493). -
oauth2.0_token()(andinit_oauth2.0()) gain a new
query_authorize_extraparameter make it possible to add extra query
parameters to the authorization URL. This is needed some APIs (e.g. fitbit)
(@cosmomeese, #503). -
oauth_endpoints()contains updated urls for Yahoo (@ctrombley, #493)
and Vimeo (#491). -
OAuth 2.0 token refresh gives a more informative error if it fails (#516).
-
Prior to token retrieval from on-disk cache, scopes are de-duplicated,
sorted, and stripped of names before being hashed. This eliminates a
source of hash mismatch that causes new tokens to be requested, even when
existing tokens had the necessary scope. (@jennybc, #495)
Updates to demos:
-
The Facebook OAuth demo now uses device flow (#510). This allows you to
continue using the FB api from R under their new security policy. -
A new Noun Project demo shows how to use one-legged OAuth1 (@cderv, #548).
-
The Vimeo demo has been updated from OAuth 1.0 to 2.0 (#491).
Minor changes and improvements
-
cache_info()now handles un-named flags, as illustrated by "private" when
the server returns "private, max-age = 0". -
parse_http_date()gets a better default value for thefailureargument
so that reponses with unparseable dates can be printed without error
(@shrektan, #544). -
POST()now uses 22 digits of precision forbodylist elements by default
(@jmwerner, #490) -
RETRY()now terminates on any successful request, regardless of the value
ofterminate_on. To return to the previous behaviour, set
terminate_on_success = FALSE(#522). -
In
RETRY()andVERB(),HEADrequests now succeed (#478, #499). -
Encoding falls back to UTF-8 if not supplied and content-type parsing
fails (#500). -
Non-http(s) headers are no longer parsed (@billdenney, #537). This makes it
possible to use httr with protocols other than http, although this is not
advised, and you're own your own.
httr 1.3.1
httr 1.3.0
API changes
-
Deprecated
safe_callback()has been removed. -
is_interactiveargument toinit_oauth1.0(),init_oauth2.0()and
oauth_listener()has been deprecated, as the R session does not actually
need to be interactive.
New features
-
New
set_callback()andget_callback()set and query callback functions
that are called right before and after performing an HTTP request
(@gaborcsardi, #409) -
RETRY()now retries if an error occurs during the request (@asieira, #404),
and gains two new arguments:-
terminate_ongives you greater control over which status codes should
it stop retrying. (@asieira, #404) -
pause_minallows for sub-second delays. (Use with caution! Generally the
default is preferred.) (@r2evans) -
If the server returns HTTP status code 429 and specifies a
retry-after
value, that value will now be used instead of exponential backoff with
jitter, unless it's smaller thanpause_min. (@nielsoledam, #472)
-
OAuth
-
New oauth cache files are always added to
.gitignoreand, if it exists,
.Rbuildignore. Specifically, this now happens when option
httr_oauth_cache = TRUEor user specifies cache file name explicitly.
(@jennybc, #436) -
oauth_encode()now handles UTF-8 characters correctly.
(@yutannihilation, #424) -
oauth_app()allows you to specify theredirect_urlif you need to
customise it. -
oauth_service_token()gains asubparameter so you can request
access on behalf of another user (#410), and accepts a character vector
ofscopesas was described in the documentation (#389). -
oauth_signature()now normalises the URL as described in the OAuth1.0a
spec (@leeper, #435) -
New
oauth2.0_authorize_url()andoauth2.0_access_token()functions
pull out parts of the OAuth process for reuse elsewhere (#457). -
oauth2.0_token()gains three new arguments:-
config_initallows you to supply additional config for the initial
request. This is needed for some APIs (e.g. reddit) which rate limit
based onuser_agent(@muschellij2, #363). -
client_credentials, allows you to use the OAauth2 Client Credential
Grant. See RFC 6749
for details. (@cderv, #384) -
A
credentialsargument that allows you to customise the auth flow.
For advanced used only (#457)
-
-
is_interactiveargument toinit_oauth1.0(),init_oauth2.0()and
oauth_listener()has been deprecated, as the R session does not need
to be interactive.
Minor bug fixes and improvements
-
BROWSER()prints a message telling you to browse to the URL if called
in a non-interactive session. -
find_cert_bundle()will now correctly find cert bundle in "R_HOME/etc"
(@jiwalker-usgs, #386). -
You can now send lists containing
curl::form_data()in thebodyof
requests with `encoding = "multipart". This makes it possible to specify the
mime-type of individual components (#430). -
modify_url()recognised more forms of empty queries. This eliminates a
source of spurious trailing?and?=(@jennybc, #452) -
More forms of empty query are recognized as such. Eliminates a source of
spurious trailing?and?=in URLs produced bymodify_url().
(@jennybc, #452) -
The
length()method of the internalpathclass is no longer exported
(#395).