From 4b072a0e69e3d70daccebcf26b72b192296fa430 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Fri, 17 May 2024 11:33:33 -0300 Subject: [PATCH] feat: allow specifying content type when creating append blob --- src/erlazure.erl | 6 +++++- test/erlazure_SUITE.erl | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/erlazure.erl b/src/erlazure.erl index 1ad6d47..fe33c62 100644 --- a/src/erlazure.erl +++ b/src/erlazure.erl @@ -592,7 +592,11 @@ handle_call({put_blob, Container, Name, Type = append_blob, Options}, _From, Sta ReqOptions = [{method, put}, {path, lists:concat([Container, "/", Name])}, {params, Params ++ Options}], - ReqContext = new_req_context(?blob_service, ReqOptions, State), + ReqContext1 = new_req_context(?blob_service, ReqOptions, State), + ReqContext = case proplists:get_value(content_type, Options) of + undefined -> ReqContext1#req_context{ content_type = "application/octet-stream" }; + ContentType -> ReqContext1#req_context{ content_type = ContentType } + end, {Code, Body} = execute_request(ServiceContext, ReqContext), return_response(Code, Body, State, ?http_created, created); diff --git a/test/erlazure_SUITE.erl b/test/erlazure_SUITE.erl index 5cb4b2c..4daba70 100644 --- a/test/erlazure_SUITE.erl +++ b/test/erlazure_SUITE.erl @@ -135,12 +135,16 @@ t_append_blob_smoke_test(Config) -> ?assertMatch({[], _}, erlazure:list_containers(Pid)), ?assertMatch({ok, created}, erlazure:create_container(Pid, Container)), %% Upload some blobs - ?assertMatch({ok, created}, erlazure:put_append_blob(Pid, Container, "blob1")), + Opts = [{content_type, "text/csv"}], + ?assertMatch({ok, created}, erlazure:put_append_blob(Pid, Container, "blob1", Opts)), ?assertMatch({ok, appended}, erlazure:append_block(Pid, Container, "blob1", <<"1">>)), ?assertMatch({ok, appended}, erlazure:append_block(Pid, Container, "blob1", <<"\n">>)), ?assertMatch({ok, appended}, erlazure:append_block(Pid, Container, "blob1", <<"2">>)), + ListedBlobs = erlazure:list_blobs(Pid, Container), ?assertMatch({[#cloud_blob{name = "blob1"}], _}, - erlazure:list_blobs(Pid, Container)), + ListedBlobs), + {[#cloud_blob{name = "blob1", properties = BlobProps}], _} = ListedBlobs, + ?assertMatch(#{content_type := "text/csv"}, maps:from_list(BlobProps)), %% Read back data ?assertMatch({ok, <<"1\n2">>}, erlazure:get_blob(Pid, Container, "blob1")), %% Delete blob