aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-02-16Update Cowlib to 1.1.01.1.0Loïc Hoguin
2015-02-16Add cow_qs for Websocket protocol parsing/buildingLoïc Hoguin
Code extracted from Cowboy and generalized. There are no tests in this file: the code is tested with Autobahntestsuite through the Cowboy test suite. There currently is no function to build a masked frame.
2015-02-16Add a comment on a testLoïc Hoguin
2015-01-07Use 'or' instead of 'orelse' in cow_http_hdLoïc Hoguin
About the same except for functions with tons of tests per clauses, like parse_content_language/1.
2015-01-04Simplify the cow_http_hd codeLoïc Hoguin
Also rename the macros for inline lowercasing to ?LOWER, and move the type detection macros to cow_parse.hrl.
2015-01-03Add @todos in cow_http_hd for additional headersLoïc Hoguin
2015-01-02Make sure tokens are non-empty in cow_http_hdLoïc Hoguin
2015-01-02Add cow_http_hd:parse_proxy_authenticate/1Loïc Hoguin
From RFC7235. See cow_http_hd:parse_www_authenticate/1.
2015-01-02Add cow_http_hd:parse_www_authenticate/1Loïc Hoguin
From RFC7235, RFC2617 and RFC6750. Features an attempt at simplifying the code using ?IS_WS macro.
2014-12-31Add cow_http_hd:parse_proxy_authorization/1Loïc Hoguin
From RFC7235. See cow_http_hd:parse_authorization/1.
2014-12-31Add cow_http_hd:parse_authorization/1Loïc Hoguin
Supports Basic, Digest and Bearer schemes only. From RFC7235, RFC2617 and RFC6750.
2014-12-31Remove an extraneous empty lineLoïc Hoguin
2014-12-29Add cow_http_hd:parse_x_forwarded_for/1Loïc Hoguin
From thin air.
2014-12-29Add cow_http_hd:parse_host/1, remove cow_http:parse_fullhost/1Loïc Hoguin
From RFC7230 and RFC3986. The new function now validates that the characters are correct, but does not go as far as validate segment sizes or number of segments. Its main purpose is still to split host and port.
2014-12-28Add cow_http_hd:parse_pragma/1Loïc Hoguin
We go for an exact <<"no-cache">> match because this is the only directive that was ever defined, because the header is only kept for backward compatible reasons with HTTP/1.0 caches, and because for all other uses the cache-control header is preferred.
2014-12-28Add a test for cow_http_hd:parse_content_length/1Loïc Hoguin
Negative number.
2014-12-28Add cow_http_hd:parse_content_range/1Loïc Hoguin
From RFC7233.
2014-12-27Add cow_http_hd:parse_range/1Loïc Hoguin
From RFC7233.
2014-12-26Add cow_http_hd:parse_if_range/1Loïc Hoguin
From RFC7233.
2014-12-26Add cow_http_hd:parse_accept_ranges/1Loïc Hoguin
From RFC7233.
2014-12-26Fix a parse_max_forwards testLoïc Hoguin
2014-12-26Add cow_http_hd:parse_retry_after/1Loïc Hoguin
From RFC7231.
2014-12-26Add specs to cow_date:parse_date/1Loïc Hoguin
2014-12-26Improve internal cow_http_hd function token_ci_list/2Loïc Hoguin
We now ensure that the tokens are made of token characters only.
2014-12-26Add cow_http_hd:parse_allow/1Loïc Hoguin
From RFC7231.
2014-12-26Add cow_http_hd:parse_age/1Loïc Hoguin
From RFC7234.
2014-12-26Add cow_http_hd:parse_vary/1Loïc Hoguin
From RFC7231.
2014-12-26Fix a parse_upgrade testLoïc Hoguin
2014-12-26Add missing export for second previous commitLoïc Hoguin
2014-12-26Simplify the code for parsing 1*DIGIT header valuesLoïc Hoguin
Follow-up from the change that ensured we don't get any extra whitespace following the value. We can now call binary_to_integer/1 which is more efficient.
2014-12-25Add cow_http_hd:parse_sec_websocket_version_resp/1Loïc Hoguin
From RFC6455. Ho ho ho!
2014-12-24Add cow_http_hd:parse_sec_websocket_protocol_resp/1Loïc Hoguin
From RFC6455.
2014-12-24Use _req instead of _client for request-specific parsersLoïc Hoguin
2014-12-24Add dummy functions for Sec-WebSocket-(Accept|Key) headersLoïc Hoguin
From RFC6455. These base64 values are expected to be matched directly in the first case, or hashed to generate a new base64 value, therefore no parsing or validation is required.
2014-12-24Fix a variable shadow issue in the testsLoïc Hoguin
2014-12-24Add cow_http_hd:parse_te/1Loïc Hoguin
From RFC7230.
2014-12-21Do not attempt to skip whitespace after single value headersLoïc Hoguin
We now expect Cowboy or any other application to remove it before calling the header parse function.
2014-12-21Add cow_http_hd:parse_cache_control/1Loïc Hoguin
From RFC7234.
2014-12-20Speed up the two slowest properties in cow_http_hdLoïc Hoguin
We limit input to 50 items maximum.
2014-12-20Use choose/2 and elements/1 where appropriate instead of oneof/1Loïc Hoguin
2014-12-20Add cow_http_hd:parse_trailer/1Loïc Hoguin
From RFC7230.
2014-12-20Simplify generators for language rangesLoïc Hoguin
2014-12-20Speed up a few properties by limiting parameters inputLoïc Hoguin
2014-12-20Add cow_http_hd:parse_content_language/1Loïc Hoguin
From RFC7231 and RFC5646. The ABNF for language tags is terrible. It makes parsing efficiently a big challenge and the result is this huge ugly set of functions. Thankfully triq allows us to make sure the implementation is correct. A large number of examples has also been extracted from both RFCs. The various ?IS_ALPHA(C), ?IS_TOKEN(C) and so on have received a change: they now use 'orelse' instead of ';'. This is because in this new code we need to check more than one character per clause. The compilation time for this module increased dramatically. Apparently happens because the guards are too big. Using ranges ($a =< C =< $z) instead of the current solution makes compilation much faster, but the function executes twice as slow which is not acceptable.
2014-12-19Add cow_http_hd:parse_content_encoding/1Loïc Hoguin
From RFC7231.
2014-12-18Improve cow_http_hd:parse_max_forwards/1 specLoïc Hoguin
2014-12-18Add cow_http_hd:parse_sec_websocket_extensions/1Loïc Hoguin
From RFC6455. This function is about 3 times faster than the current Cowboy code.
2014-12-18Add cow_http_hd:parse_sec_websocket_protocol_client/1Loïc Hoguin
2014-12-18Add cow_http_hd:parse_sec_websocket_version_client/1Loïc Hoguin
From RFC6455. The code is slower than a plain binary_to_integer(Version), because it enforces that the value is in the 0..255 range as per the specification, and that the input binary is no longer than 3 characters. It is however better to enforce this because the client could also send a huge integer and we don't really want to convert it and waste resources.
2014-12-18Add cow_http_hd:parse_expires/1Loïc Hoguin
From RFC7234.