Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a dedicated error class for OAuth response parsing errors. (#596)
Not all OAuth providers in the wild return spec-compliant responses in the case of an error. A prominent example is Facebook [0], but I've seen issues with Snowflake OAuth's token exchange flow, too. I've also seen weird issues in the past like authentication failues resulting in redirects to human-readable HTML pages rather than proper OAuth2 error response JSON. All this to say: I think it can be really useful to have access to the original response object when trying to diagnose an issue. So this commit adds a dedicated `httr2_oauth_parse` error class and embeds the response object in it. This allows consumers to write code that handles these errors with a lot more context: tryCatch( some_oauth_using_code(), httr2_oauth_parse = function(cnd) { cli::cli_abort( c( "Unexpected failure during an OAuth flow.", i = "Status code: {resp_status(cnd$resp)}", i = "Response content type: {resp_content_type(cnd$resp)}" ), parent = cnd ) } ) Unit tests are included. [0]: https://pilcrowonpaper.com/blog/dear-oauth-providers/ Signed-off-by: Aaron Jacobs <[email protected]>
- Loading branch information