0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00
cowboy/test/http_SUITE_data/http_loop_stream_recv.erl
Loïc Hoguin ae0dd61673 Add tests for responses and request body reading
This is a large commit. The cowboy_req interface has largely
changed, and will change a little more. It's possible that
some examples or tests have not been converted to the new
interface yet. The documentation has not yet been updated.
All of this will be fixed in smaller subsequent commits.

Gotta start somewhere...
2016-08-10 11:49:31 +02:00

34 lines
698 B
Erlang

%% Feel free to use, reuse and abuse the code in this file.
-module(http_loop_stream_recv).
-export([init/2]).
-export([info/3]).
-export([terminate/3]).
init(Req, _) ->
receive after 100 -> ok end,
self() ! stream,
{cowboy_loop, Req, undefined, 100}.
info(stream, Req, undefined) ->
stream(Req, 1, <<>>).
stream(Req, ID, Acc) ->
case cowboy_req:read_body(Req) of
{ok, <<>>, Req2} ->
{stop, cowboy_req:reply(200, Req2), undefined};
{_, Data, Req2} ->
parse_id(Req2, ID, << Acc/binary, Data/binary >>)
end.
parse_id(Req, ID, Data) ->
case Data of
<< ID:32, Rest/bits >> ->
parse_id(Req, ID + 1, Rest);
_ ->
stream(Req, ID, Data)
end.
terminate(stop, _, _) ->
ok.