Faraday w/ auto-run

Start tinkering

HTTP requests to httpbingo.org with Faraday incl. some middleware.

require "bundler/inline"

gemfile do
  source "https://rubygems.org"
  gem "keepgoing" # auto-runs script on changes
  gem "faraday", "~> 2.3"
  gem "faraday-retry", "~> 1.0"
end

require "faraday"
require "faraday/retry"

# configure Faraday incl. some middleware
retry_options = {
  max: 2,
  interval: 0.5,
  retry_statuses: [500],
  retry_block: -> (env, _options, _retries, _exc) { puts "\n\ngot #{env.status} 😱 will retry\n\n" }
}

connection = Faraday.new("http://httpbingo.org") do |f|
  f.request :json # encode req bodies as JSON and automatically set the Content-Type header
  f.request :retry, retry_options
  f.response :json # decode response bodies as JSON
  f.response :logger
end

# POST request
response = connection.post("/post") do |req|
  req.params["limit"] = 100
  req.body = {query: "chunky bacon"}
end

# GET some json
response = connection.get("/json")
puts "\n", response.body.dig("slideshow", "title"), "\n"

# test-drive retries
response = connection.get("/unstable")
puts "\n", response.status