aboutsummaryrefslogtreecommitdiffstats
path: root/test/http_SUITE_data/http_multipart_stream.erl
blob: b7397405604a24599928d5bbd07f26c7d053e904 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
%% 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 = list_to_integer(binary_to_list(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.