-module(plunk@event). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([track_event_response_decoder/0, track/2, decode/1]). -export_type([event/0, track_event_response/0]). -type event() :: {event, binary(), binary(), list({binary(), gleam@json:json()})}. -type track_event_response() :: {track_event_response, boolean(), binary(), binary(), gleam@option:option(binary())}. -spec track_event_response_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, track_event_response()} | {error, list(gleam@dynamic:decode_error())}). track_event_response_decoder() -> gleam@dynamic:decode4( fun(Field@0, Field@1, Field@2, Field@3) -> {track_event_response, Field@0, Field@1, Field@2, Field@3} end, gleam@dynamic:field(<<"success"/utf8>>, fun gleam@dynamic:bool/1), gleam@dynamic:field(<<"contact"/utf8>>, fun gleam@dynamic:string/1), gleam@dynamic:field(<<"event"/utf8>>, fun gleam@dynamic:string/1), gleam@dynamic:optional_field( <<"timestamp"/utf8>>, fun gleam@dynamic:string/1 ) ). -spec track(plunk@instance:instance(), event()) -> gleam@http@request:request(binary()). track(Instance, Event) -> Body = begin _pipe = gleam@json:object( [{<<"event"/utf8>>, gleam@json:string(erlang:element(2, Event))}, {<<"email"/utf8>>, gleam@json:string(erlang:element(3, Event))}, {<<"data"/utf8>>, gleam@json:object(erlang:element(4, Event))}] ), gleam@json:to_string(_pipe) end, _pipe@1 = Instance, plunk@internal@bridge:make_request(_pipe@1, <<"/track"/utf8>>, post, Body). -spec decode(gleam@http@response:response(binary())) -> {ok, track_event_response()} | {error, plunk@types:plunk_error()}. decode(Res) -> _pipe = Res, plunk@internal@bridge:decode(_pipe, fun track_event_response_decoder/0).