From 0e4265698022428205aeb0d790ce5f6861b528a7 Mon Sep 17 00:00:00 2001 From: Alexey Romanov Date: Tue, 19 Apr 2011 14:06:10 +0400 Subject: [PATCH] save_response_to_file option extended to support appending to an existing file --- src/ibrowse.erl | 2 +- src/ibrowse_http_client.erl | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ibrowse.erl b/src/ibrowse.erl index d219212..5ee5056 100644 --- a/src/ibrowse.erl +++ b/src/ibrowse.erl @@ -286,7 +286,7 @@ send_req(Url, Headers, Method, Body) -> %% Sock_opts = [Sock_opt] %% Sock_opt = term() %% ChunkSize = integer() -%% srtf() = boolean() | filename() +%% srtf() = boolean() | filename() | {append, filename()} %% filename() = string() %% response_format() = list | binary send_req(Url, Headers, Method, Body, Options) -> diff --git a/src/ibrowse_http_client.erl b/src/ibrowse_http_client.erl index eb2bf31..65f3bbc 100644 --- a/src/ibrowse_http_client.erl +++ b/src/ibrowse_http_client.erl @@ -357,7 +357,8 @@ accumulate_response(Data, tmp_file_fd = undefined} = CurReq, http_status_code=[$2 | _]}=State) when Srtf /= false -> TmpFilename = make_tmp_filename(Srtf), - case file:open(TmpFilename, [write, delayed_write, raw]) of + Mode = file_mode(Srtf), + case file:open(TmpFilename, [Mode, delayed_write, raw]) of {ok, Fd} -> accumulate_response(Data, State#state{ cur_req = CurReq#request{ @@ -434,8 +435,13 @@ make_tmp_filename(true) -> integer_to_list(B) ++ integer_to_list(C)]); make_tmp_filename(File) when is_list(File) -> + File; +make_tmp_filename({append, File}) when is_list(File) -> File. +file_mode({append, _File}) -> append; +file_mode(_Srtf) -> write. + %%-------------------------------------------------------------------- %% Handles the case when the server closes the socket