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.
1.1.0 - 2019-09-04
Raxx.Request.uri/1
and docs forRaxx.Request
module.
- Usage of
iodata
made more explicit in the docs.
1.0.1 - 2019-05-01
- Typespec added for
Raxx.request_port/2
so that return type is:inet.port_number
notinteger
.
1.0.0 - 2019-04-16
- Config option for
:extra_statuses
removed. Raxx.reason_phrase/1
returnsnil
for unknown status code.- Warnings given when using
Raxx.Server
andRaxx.Router
in the same module. - Warnings given for implementing
handle_request/2
in a module usingRaxx.Server
.
0.18.1 - 2019-02-19
Raxx.redirect/2
no longer adds a HTML body. The body can now be set with an option.
- EExHTML is no longer a dependency.
0.18.0 - 2019-02-07
- Warnings to include
raxx_logger
andraxx_view
. mount
field fromRaxx.Request
.Raxx.BasicAuth
see the BasicAuthentication extension inRaxx.Kit
.Raxx.Session.SignedCookie
no longer supported, to be added as extension.Raxx.SimpleClient
no longer supported.Raxx.RequestID
no longer supported.
0.17.6 - 2019-02-05
Raxx.View
andRaxx.Layout
extracted to separate extension project, use{:raxx_view, "~> 0.1.0"}
for backwards compatable api.
Raxx.Context
for passing contextual information about the request/response.
0.17.5 - 2019-02-04
Raxx.Logger
extracted to separate extension project, use{:raxx_logger, "~> 0.1.0"}
for backwards compatable api.
0.17.4 - 2019-01-06
- Dialyzer warning from
Raxx.Router.section/2
macro fixed.
0.17.3 - 2018-11-22
Raxx.Router.section/2
for defining routes that have a middleware stack.- Using macro for
Raxx.Middleware
that adds default implementations for each callback.
0.17.2 - 2018-11-13
- Support
eex_html
versions0.1.x
and0.2.x
.
0.17.1 - 2018-11-01
Raxx.Middleware
to develop composable components for common server functionality.Raxx.Stack
module to combine middlewares are server modules.
0.17.0 - 2018-10-28
Raxx.SimpleServer
behaviour for servers that only need ahandle_request/2
callback. usingRaxx.SimpleServer
automatically implementsRaxx.Server
so the module can be used in a service.
use Raxx.Server
issues a warning if the module implementshandle_request/2
, it is expected that such servers will make use of the newRaxx.SimpleServer
.Raxx.set_header/2
raises anArgumentError
when setting host headers.ArgumentError
is raised instead ofRuntimeError
in cases of bad headers and body content.Raxx.set_body/2
raises anArgumentError
for GET and HEAD requests.
Raxx.is_application?
, useRaxx.Server.verify_server
instead.Raxx.verify_application
, useRaxx.Server.verify_server
instead.Raxx.Server.is_implemented?
, useRaxx.Server.verify_server
instead.
0.16.1 - 2018-09-19
Raxx.NotFound
was incorrectly building body forhandle_request
callback.
0.16.0 - 2018-09-12
:maximum_body_length
options when usingRaxx.Server
so protect against bad clients.Raxx.set_content_length/3
to set the content length of a request or response.Raxx.get_content_length/2
to get the integer value for the content length of a message.Raxx.set_attachment/2
helper to tell the browser the response should be stored on disk rather than displayed in the browser.Raxx.safe?/1
to check if request method marks it as safe.Raxx.idempotent?/1
to check if request method marks it as idempotent.Raxx.get_query/1
replacement forRaxx.fetch_query/1
because it never returns error case.
Raxx.set_body/2
will raise an exception for responses that cannot have a body.Raxx.set_body/2
automatically adds the "content-length" if it is able.- Requests and Responses now work with iodata.
Raxx.body
spec changed to include iodata.- Improved error message when using invalid iolist in a view.
Raxx.NotFound
works with iodata for temporary body during buffering.render
function generated byRaxx.View
sets body to iodata from view, without turning into a binary.
Raxx.set_header/2
now raises when setting connection specific headers.
EEx.HTML
replaced byEExHTML
from theeex_html
hex package.Raxx.html_escape/1
replaced byEExHTML.escape_to_binary/1
.
Raxx.HTTP1.parse_request/1
andRaxx.HTTP1.parse_response/1
handle more error cases.- response/request sent when request/response expected.
- multiple "host" headers in message.
- invalid "content-length" header.
- multiple "content-length" headers in message.
- invalid "connection" header.
- multiple "connection" headers in message.
0.15.11 - 2018-09-04
Raxx.View.javascript_variables/1
to safely inject values into the JavaScript of a template.
0.15.10 - 2018-09-03
Raxx.HTTP1
to handle case insensitive connect headers.
0.15.9 - 2018-09-02
Raxx.View
to generate render functions fromeex
templates.Raxx.Layout
generate views from a reusable layout and set of helpers.EEx.HTML
,EEx.HTML.Safe
andEEx.HTMLEngine
. These are temporary additions, used to provide HTML escaping in view and layout modules. They will be moved toeex
or a new project before1.0
.
0.15.8 - 2018-08-27
Raxx.SimpleClient
A very simple HTTP/1.1 client.
0.15.7 - 2018-08-18
Raxx.HTTP1
Tools for parsing and serializing to HTTP1 format.
0.15.6 - 2018-08-09
Raxx.request
sets the raw_path as/
when no path component given.
0.15.5 - 2018-08-04
Raxx.request_host
to get the domain or ip a request is for.Raxx.request_port
to get the numeric port a request is sent to.
0.15.4 - 2018-05-20
:raxx
module added that is easier to use from erlang.
0.15.3 - 2018-04-30
- Router will return informative return error like any server module.
0.15.2 - 2018-04-28
Raxx.Server.handle/2
to be used by server implemenations when executing aRaxx.Server
module. Add better error messages in cases of bad responses.
- The type of
Raxx.body
andRaxx.Data.data
is nowbinary
instead ofString.t()
to indicate it may not be an actual string. - Generate request_id without using external
uuid
dependency.
0.15.1 - 2018-04-22
Raxx.Request
struct now has araw_path
field to hold the unparsed path of the URL.
0.15.0 - 2018-04-18
Raxx.fetch_query/1
fetch the decoded query from a request.
- The query field on the
Raxx.Request
struct is now a binary and not a parsed query. This is changed because there is no formal specification for query string structure. https://stackoverflow.com/questions/24059773/correct-way-to-pass-multiple-values-for-same-parameter-name-in-get-request
URI2
is no longer part of this project, user will need to provide their own implementations to decode nested queries.
0.14.14 - 2018-03-21
Raxx.set_secure_browser_headers/1
Adds a collection of useful headers when responding to a browser.Raxx.delete_header/2
delete a header from request or response.Raxx.RequestID
assign a request id to every request handled by an application
0.14.13 - 2018-03-19
- Secure sessions in signed cookies by using
Raxx.Session.SignedCookie
. Raxx.BasicAuth
for setting and verifying credentials using the Basic authentication scheme.
0.14.12 - 2018-03-14
Raxx.get_header/2
for fetching a single header value from a request/response.Raxx.redirect/2
will generate a redirect response directing browser to another url.- Header values checked for forbidden charachters using
Raxx.set_header/3
. Raxx.get_header/3
return fallback value if required header is not set.
0.14.11 - 2018-03-08
- The source code is now formatted, ensuring code is properly formatted is part of CI and a requirement for contributions.
0.14.10 - 2018-02-24
- Default page in
Raxx.Server
returned with status 404.
0.14.9 - 2018-02-07
Raxx.Logger
sets request metadata on the logger.
0.14.8 - 2018-02-05
:extra_statuses
configuration option added.
Raxx.Logger
uses@impl
for allRaxx.Server
callbacks.
0.14.7 - 2018-01-30
Raxx.Logger
middleware for basic request logging.
0.14.6 - 2018-01-03
- Typespec for
Raxx.set_body/2
reuses body type to fix issue with a binary not being a subtype ofiolist
.
1.0.0-rc.2(0.14.5) - 2017-12-29
- Types
headers
andbody
added toRaxx
module.
- Typespecs for
Raxx.response/1
accepts atom identifiers for status codes. - Typespecs for
Raxx.set_body/2
andRaxx.set_header/3
fixed to accept both Raxx message types.
0.14.4 - 2017-12-28
Raxx.is_application?/1
Test to see if an application is compatable to run on Raxx Servers.Raxx.verify_application/1
Same test asis_application?/1
but returns informativ error.- Typespecs for
Raxx.split_path/1
andRaxx.set_body/2
0.14.3 - 2017-12-12
- Typespecs for all public functions.
- Dialyzer step added to CI.
0.14.2 - 2017-11-14
- Correctly split file on new lines when generating status code helpers.
0.14.1 - 2017-11-05
Raxx.reason_phrase/1
Get the HTTP/1 reason phrase for each status code.
- Dependency on http_status no longer necessary.
1.0.0-rc.1(0.14.0) - 2017-10-29
handle_headers
has been renamed tohandle_head
. As previously decribed in README.
- Informative error raised for returning incomplete response without new state
1.0.0-rc.0(0.13.0) - 2017-10-16
Raxx.Trailer
has been renamed toRaxx.Tail
.handle_trailers
has been renamed tohandle_tail
.Raxx.Fragment
has been replaced byRaxx.Data
.handle_fragment
has been replaced byhandle_data
- Specific header modules that were prevously deprecated.
Raxx.Connection
Raxx.ContentLength
Raxx.Location
Raxx.Referrer
Raxx.TransferEncoding
Raxx.UserAgent
0.12.3 - 2017-10-14
- Using
Raxx.Server
imports helper functions fromRaxx
. - Using
Raxx.Server
aliasesRaxx.Request
. - Using
Raxx.Server
aliasesRaxx.Response
.
- Dependency on
Plug
is not needed. - Support for Elixir 1.4,
Raxx.Router
had bugs.
0.12.2 - 2017-10-11
Raxx.trailer/0
completes request without any extra metadata.handle_request/2
added toRaxx.Server
behaviour.- Default implementations added to
Raxx.Server
callbacks. Raxx.Router
will forward request to controllers based on request patterns.
0.12.1 - 2017-09-24
- Cannot set HTTP headers with uppercase attribute.
- Cannot add an HTTP header twice.
0.12.0 - 2017-08-31
- Replace simple interface with a streaming interface through
Raxx.Server
. See full article. - Build messages with
Raxx
module instead orRaxx.Request
andRaxx.Response
.
Raxx.complete?/1
returnstrue
for aniolist
body