Current section
Files
Jump to
Current section
Files
src/plunk@event.erl
-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())}.
-file("/home/runner/work/plunk.gleam/plunk.gleam/src/plunk/event.gleam", 26).
-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
)
).
-file("/home/runner/work/plunk.gleam/plunk.gleam/src/plunk/event.gleam", 65).
-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).
-file("/home/runner/work/plunk.gleam/plunk.gleam/src/plunk/event.gleam", 79).
-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).