-module(gdav@update_event).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gdav/update_event.gleam").
-export([request/4, build/2, response/1]).
-export_type([request_builder/0]).
-type request_builder() :: {request_builder,
binary(),
binary(),
binary(),
binary()}.
-file("src/gdav/update_event.gleam", 16).
-spec request(binary(), binary(), binary(), binary()) -> request_builder().
request(Collection_path, Filename, Etag, Icalstring) ->
{request_builder, Collection_path, Filename, Etag, Icalstring}.
-file("src/gdav/update_event.gleam", 25).
-spec build(request_builder(), gdav:credentials()) -> gleam@http@request:request(binary()).
build(Builder, Credentials) ->
Headers = [{<<"Content-Type"/utf8>>,
<<"text/calendar; charset=utf-8"/utf8>>},
{<<"If-Match"/utf8>>, erlang:element(4, Builder)}],
gdav@internal:request(
Credentials,
put,
<<<<(erlang:element(2, Builder))/binary, "/"/utf8>>/binary,
(erlang:element(3, Builder))/binary>>,
Headers,
erlang:element(5, Builder)
).
-file("src/gdav/update_event.gleam", 43).
-spec response(gleam@http@response:response(binary())) -> {ok, nil} |
{error, gdav:dav_error()}.
response(Res) ->
case erlang:element(2, Res) of
S when (S >= 200) andalso (S < 300) ->
{ok, nil};
412 ->
{error, {unexpected_response, Res}};
404 ->
{error, not_found};
401 ->
{error, authentication_failed};
403 ->
{error, authentication_failed};
_ ->
{error, {unexpected_response, Res}}
end.