Age | Commit message (Collapse) | Author |
|
Changes include:
* Much simplified route configuration.
* Etag generation is now enabled by default.
* Web mimetypes are now detected by default. A bigger list of
mimetypes can be detected without any additional library.
* Mimetypes can no longer be specified as a list. Copying this
list for new connections is too costy. You can easily convert
it into a function and pass that function to the handler instead.
* You can however specify a single hardcoded mimetype. Mostly
useful when serving a single file, like an index.html file,
to avoid extra operations.
* Specifying a path as a list of tokens is not possible anymore.
Use either a binary or a string.
* Using a private directory will not work if the application
was not started properly. Cowboy will not attempt to find
the location of this directory if the VM doesn't know it,
as this caused issues in some setups.
* Overall the code has been much simplified and clarified,
and of course has now been documented.
|
|
|
|
Cut in four different chapters: request, request body,
response and cookies.
|
|
|
|
|
|
Reworked the table of contents also.
|
|
|
|
We now describe how to build a hello world application from
start to finish, including setting up erlang.mk for building,
and using relx for generating the release. All concepts are
not explained in details of course, but we don't need to at
this point, we just want things to be working.
|
|
Start moving a few functions from Cowboy into cowlib.
|
|
|
|
|
|
|
|
We don't care about parameterized modules anymore. They're gone!
|
|
Now instead of {1, 1} we have 'HTTP/1.1', and instead of {1, 0}
we have 'HTTP/1.0'. This is more efficient, easier to read in
crash logs, and clearer in the code.
|
|
Clients do not send it. We skip the value if we receive it now,
as it shouldn't happen, and won't for all the mainstream clients.
|
|
|
|
|
|
Add more infos about MIME types and the file option.
|
|
You can use these values to perform a reply using the negotiated
content-type and language for non-HEAD/GET methods.
|
|
|
|
It defaults to setting the Allow header to "HEAD, GET, OPTIONS".
|
|
|
|
Thanks to Martin Törnwall for pointing this out.
|
|
|
|
This kind of function is highly dependent on the proxy used,
therefore parsing was added for x-forwarded-for instead and we
just let users write the function that works for them. The code
can be easily extracted if anyone was using the function.
|
|
|
|
|
|
This allows us to change the max chunk length on a per chunk basis
instead of for the whole stream. It's also much easier to use this
way even if we don't want to change the chunk size.
|
|
|
|
|
|
Defaults to a maximum of 1000000 bytes.
Also standardize the te_identity and te_chunked decoding functions.
Now they both try to read as much as possible (up to the limit),
making body reading much faster when not using chunked encoding.
|
|
|
|
|
|
|
|
Also fix the guide entry on hooks.
|
|
Reported by Joe Armstrong.
|
|
|
|
|
|
|
|
|
|
|
|
This is obviously not proper documentation. We will properly document
it when the API stabilizes.
|
|
Make cowboy_router:compile/1 return to be consistent with current
implementation.
|
|
Reported by Michel Rijnders.
|
|
|
|
|
|
|
|
Ultimately few things change, it's mostly just a nicer syntax and
slightly different expectations. The name of the value `dispatch`
did not change, because the previous dispatch values will now fail
if the code is not updated to using `cowboy_router:compile/1`.
No constraints have been implemented in this commit.
|
|
This should have been done a *long* time ago, back when I initially
added Websocket support. This is the first part of two in improving
loop handler support with regards to socket closure.
Reason may include: {normal, shutdown} for the most normal shutdown,
{normal, timeout} for a loop handler timeout shutdown, or {error, _}
if an error occured.
|
|
Fix typo in the guide introduction
|