Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

1.3.0 - 2020-10-13

Added

  • The :log argument to the :trace option. Add a trace: :log option to your module's use statement, and every request will be logged with a trace. The log message even includes a request ID from Plug.RequestId, if you have one. (#4)
  • The :decision_tree_overrides argument to Liberator.Resource. This is an advanced feature that lets users override parts of the decision tree that Liberator evaluates. Want to change the ordering of some decisions, or add new ones? This is the way! (#5)
  • The :handler_status_overrides argument to Liberator.Resource. This is an advanced feature that lets users override status codes associated with handlers. It's mostly useful for those wanting to implement their own new statuses that Liberator doesn't support.
  • The :action_followup_overrides argument to Liberator.Resource. This is an advanced feature that lets users override the functions called immediately after actions. It's mostly useful for those wanting to implement their own new actions that Liberator doesn't support.

1.2.0 - 2020-10-12

Added

  • The 402 Payment Required status, along with related callbacks payment_required? and handle_payment_required/1.
  • The 451 Unavailable for Legal Reasons status, along with related callbacks unavailable_for_legal_reasons?/1 and handle_unavailable_for_legal_reasons/1.
  • The 429 Too Many Requests status, along with related callbacks too_many_requests?/1 and handle_too_many_requests/1. If you return a map containing a :retry_after value, Liberator will use that to set a retry-after header.
  • You can also return a :retry_after value from any other decision function, like service_available?/1, or moved_permanently?/1, for the same effect. See MDN's docs on the retry-after header for more information on why you'd want to do this.

Fixed

  • Dates in headers are now parsed properly. (#1)

1.1.0 - 2020-10-04

Added

  • This changelog!
  • The :trace option: Add trace: :headers to your use Liberator.Resource statement to get an x-liberator-trace header added to responses, and see the result of all decisions.
  • Compression options: deflate, gzip, and identity.

Changed

  • Codecs are now configurable. Set the :media_types and :encodings map in Liberator's config to add your own codecs.

Removed

Fixed

  • Better wildcard handling during content negotiation
  • Content negotiation actually obeys q-values for priority

1.0.0 - 2020-10-02

Added

  • Basic decision tree navigation