diff options
Diffstat (limited to 'src/plop_httputil.erl')
-rw-r--r-- | src/plop_httputil.erl | 12 |
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), |