summaryrefslogtreecommitdiff
path: root/src/plop_httputil.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/plop_httputil.erl')
-rw-r--r--src/plop_httputil.erl12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plop_httputil.erl b/src/plop_httputil.erl
index 67e48ba..81a99b1 100644
--- a/src/plop_httputil.erl
+++ b/src/plop_httputil.erl
@@ -73,6 +73,16 @@ request(DebugTag, URL, Headers, <<>>) ->
request(DebugTag, URL, Headers, RequestBody) ->
request(DebugTag, URL, Headers, RequestBody, post).
+-define(MAX_CHUNK_SIZE, 512*1024).
+
+chunk_data(<<>>) ->
+ eof;
+chunk_data(Data) when is_binary(Data) ->
+ ChunkSize = min(size(Data), ?MAX_CHUNK_SIZE),
+ lager:debug("~p data left, sending ~p bytes", [size(Data), ChunkSize]),
+ {Chunk, Rest} = split_binary(Data, ChunkSize),
+ {ok, Chunk, Rest}.
+
request(DebugTag, URL, Headers, RequestBody, Method) ->
Starttime = os:timestamp(),
ParsedURL = hackney_url:parse_url(URL),
@@ -99,7 +109,7 @@ request(DebugTag, URL, Headers, RequestBody, Method) ->
{Method, Path,
add_auth(MethodString, Path, Headers,
RequestBody),
- RequestBody}),
+ {fun chunk_data/1, RequestBody}}),
lager:debug("~s: received headers for ~p: ~p",
[DebugTag, URL, RespHeaders]),
{ok, Body} = hackney:body(ClientRef),