%% Feel free to use, reuse and abuse the code in this file.

-module(http_multipart_stream).

-export([init/2]).

init(Req, Opts) ->
	Req2 = multipart(Req),
	{ok, cowboy_req:reply(200, Req2), Opts}.

multipart(Req) ->
	case cowboy_req:read_part(Req) of
		{ok, [{<<"content-length">>, BinLength}], Req2} ->
			Length = binary_to_integer(BinLength),
			{Length, Req3} = stream_body(Req2, 0),
			multipart(Req3);
		{done, Req2} ->
			Req2
	end.

stream_body(Req, N) ->
	case cowboy_req:read_part_body(Req) of
		{ok, Data, Req2} ->
			{N + byte_size(Data), Req2};
		{more, Data, Req2} ->
			stream_body(Req2, N + byte_size(Data))
	end.