## ----echo=FALSE---------------------------------------------------------------
knitr::opts_chunk$set(
  comment = "#>",
  collapse = TRUE,
  warning = FALSE,
  message = FALSE
)

## ----eval=FALSE---------------------------------------------------------------
# install.packages("fauxpas")

## ----eval=FALSE---------------------------------------------------------------
# # install.packages("remotes")
# remotes::install_github("sckott/fauxpas")

## -----------------------------------------------------------------------------
library("fauxpas")

## -----------------------------------------------------------------------------
(x <- find_error_class(418))

## -----------------------------------------------------------------------------
x$new()

## ----eval=FALSE---------------------------------------------------------------
# find_error_class(999)
# #> Error in find_error_class(999) : no method found for 999

## ----eval=FALSE---------------------------------------------------------------
# library("crul")
# cli <- HttpClient$new("https://httpbin.org/status/414")
# res <- cli$get()
# http(res)
# #> Error: Request-URI Too Long (HTTP 414).
# http414(res)
# #> Error: Request-URI Too Long (HTTP 414).

## ----eval=FALSE---------------------------------------------------------------
# x <- HTTPRequestURITooLong$new()
# x$do_verbose(res)
# #> Error: Request-URI Too Long (HTTP 414).
# #> - The server is refusing to service the request because the Request-URI is
# #>    longer than the server is willing to interpret. This rare condition is only likely
# #>    to occur when a client has improperly converted a POST request to a GET request
# #>    with long query information, when the client has descended into a URI black hole
# #>    of redirection (e.g., a redirected URI prefix that points to a suffix of itself),
# #>    or when the server is under attack by a client attempting to exploit security
# #>    holes present in some servers using fixed-length buffers for reading or
# #>    manipulating the Request-URI.

## ----eval=FALSE---------------------------------------------------------------
# library("curl")
# h <- curl::new_handle()
# curl::handle_setopt(h)
# resp <- curl::curl_fetch_memory("https://httpbin.org/status/404", h)
# http(resp)
# #> Error: Not Found (HTTP 404).
# http404(resp)
# #> Error: Not Found (HTTP 404).

## ----eval=FALSE---------------------------------------------------------------
# x <- HTTPNotFound$new()
# x$do_verbose(resp)
# #> Error:  Not Found (HTTP 404).
# #>  - The server has not found anything matching the Request-URI. No indication is
# #> given of whether the condition is temporary or permanent. The 410 (Gone) status
# #> code SHOULD be used if the server knows, through some internally configurable
# #> mechanism, that an old resource is permanently unavailable and has no forwarding
# #> address. #> This status code is commonly used when the server does not wish to
# #> reveal exactly why the request has been refused, or when no other response is
# #> applicable.

## ----eval=FALSE---------------------------------------------------------------
# library("httr")
# res <- GET("https://httpbin.org/status/405")
# http405(res)
# #> Error: Method Not Allowed (HTTP 405).

## ----eval=FALSE---------------------------------------------------------------
# x <- HTTPMethodNotAllowed$new()
# x$do_verbose(res)
# #> Error: Method Not Allowed (HTTP 405).
# #>  - The method specified in the Request-Line is not allowed for the resource
# #> identified by the Request-URI. The response MUST include an Allow header
# #> containing a list of valid methods for the requested resource.

