Skip to content
This repository has been archived by the owner on Sep 21, 2021. It is now read-only.
/ faraday-sunset Public archive

Watch out for Sunset headers on HTTP responses, as they signify the deprecation (and eventual removal) of an endpoint.

License

Notifications You must be signed in to change notification settings

wework/faraday-sunset

Repository files navigation

Faraday Sunset

Build Status Coverage Status MIT License

Watch out for HTTP responses declaring their end of life, using the Sunset header to signal deprecation (and eventual removal) of an endpoint.

Sunset is an in-development HTTP response header. Check out GitHub for issues and discussion around it's development.

This specification defines the Sunset HTTP response header field, which indicates that a URI is likely to become unresponsive at a specified point in the future.

The header we're sniffing for looks a little like this:

Sunset: Sat, 31 Dec 2018 23:59:59 GMT

So long as the server being called is inserting a Sunset header to the response with a HTTP date, this client-side code will do stuff.

Usage

Add gem to Gemfile:

gem 'faraday-sunset'

Enabling Sunset detection is as simple as referencing the middleware in your Faraday connection block:

connection = Faraday.new(url: '...') do |conn|
  conn.response :sunset, active_support: true
  # or
  conn.response :sunset, logger: Rails.logger
  # or
  conn.response :sunset, rollbar: true
  # or combine:
  conn.response :sunset, rollbar: :auto, active_support: true, logger: Rails.logger
end

For logger, You can pass in any object that acts a bit like a Rack logger, Rails logger, or anything with a warn method that takes a string.

You can configure ActiveSupport::Deprecation to warn in 3 ways:

  • true - throw warnings on sunsetted endpoints, and throw an error if active-support is missing from the project
  • false - ignore active-support
  • :auto - throw warnings on sunsetted endpoints, and ignore if active-support is missing from the project

You can [configure Rollbar][rollbar] in 3 ways:

  • true - throw warnings on sunsetted endpoints, and throw an error if active-support is missing from the project
  • false - ignore rollbar
  • :auto - throw warnings on sunsetted endpoints, and ignore if Rollbar is missing from the project

Requirements

  • Ruby: v2.2 - v2.5
  • Faraday: v0.9 - v0.14

Related Projects

  • rails-sunset - Mark your endpoints as deprecated the Railsy way
  • guzzle-sunset - Sniff for deprecations with popular PHP client Guzzle

TODO

  • Surface Link with rel=sunset as per Sunset RFC draft 04?

Testing

To run tests and modify locally, you'll want to bundle install in this directory.

bundle exec appraisal rspec

Contributing

Bug reports and pull requests are welcome on GitHub at wework/faraday-sunset. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

About

Watch out for Sunset headers on HTTP responses, as they signify the deprecation (and eventual removal) of an endpoint.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published