Packages

A Gleam library for sending emails using Plunk's API (https://useplunk.com), supports Erlang and JavaScript targets.

Current section

Files

Jump to
plunk src plunk@internal@contacts_def.erl
Raw

src/plunk@internal@contacts_def.erl

-module(plunk@internal@contacts_def).
-compile([no_auto_import, nowarn_unused_vars]).
-export([list_contacts_decoder/0, count_decoder/0, created_contact_decoder/0, deleted_contact_decoder/0, subscription_decoder/0, get_contact_decoder/0]).
-export_type([event/0, action/0, trigger/0, email/0, extended_contact/0, contact/0, created_contact/0, count/0, subscription/0, deleted_contact/0]).
-type event() :: {event,
binary(),
binary(),
binary(),
gleam@option:option(binary()),
gleam@option:option(binary()),
binary(),
binary()}.
-type action() :: {action,
binary(),
binary(),
boolean(),
integer(),
gleam@option:option(binary()),
gleam@option:option(binary()),
binary(),
binary()}.
-type trigger() :: {trigger,
binary(),
binary(),
binary(),
gleam@option:option(binary()),
binary(),
binary(),
gleam@option:option(event()),
gleam@option:option(action())}.
-type email() :: {email,
binary(),
binary(),
binary(),
binary(),
binary(),
binary(),
gleam@option:option(binary()),
gleam@option:option(binary()),
binary(),
binary(),
binary()}.
-type extended_contact() :: {extended_contact,
binary(),
binary(),
gleam@option:option(binary()),
binary(),
binary(),
list(trigger()),
list(email())}.
-type contact() :: {contact,
binary(),
binary(),
boolean(),
gleam@option:option(binary()),
binary(),
binary()}.
-type created_contact() :: {created_contact,
boolean(),
binary(),
binary(),
boolean(),
gleam@option:option(gleam@dynamic:dynamic_()),
binary(),
binary()}.
-type count() :: {count, integer()}.
-type subscription() :: {subscription, boolean(), binary(), boolean()}.
-type deleted_contact() :: {deleted_contact,
boolean(),
binary(),
binary(),
boolean(),
gleam@option:option(gleam@dynamic:dynamic_()),
binary(),
binary()}.
-spec action_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, action()} |
{error, list(gleam@dynamic:decode_error())}).
action_decoder() ->
gleam@dynamic:decode8(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7) -> {action, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7} end,
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"name"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"runOnce"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"delay"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(
<<"projectId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(
<<"templateId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(<<"createdAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"updatedAt"/utf8>>, fun gleam@dynamic:string/1)
).
-spec event_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, event()} |
{error, list(gleam@dynamic:decode_error())}).
event_decoder() ->
gleam@dynamic:decode7(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6) -> {event, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6} end,
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"name"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"projectId"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(
<<"templateId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(
<<"campaignId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(<<"createdAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"updatedAt"/utf8>>, fun gleam@dynamic:string/1)
).
-spec trigger_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, trigger()} |
{error, list(gleam@dynamic:decode_error())}).
trigger_decoder() ->
gleam@dynamic:decode8(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7) -> {trigger, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7} end,
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"contactId"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"eventId"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(
<<"actionId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(<<"createdAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"updatedAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(
<<"event"/utf8>>,
gleam@dynamic:optional(event_decoder())
),
gleam@dynamic:field(
<<"action"/utf8>>,
gleam@dynamic:optional(action_decoder())
)
).
-spec list_contacts_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok,
list(contact())} |
{error, list(gleam@dynamic:decode_error())}).
list_contacts_decoder() ->
gleam@dynamic:list(
gleam@dynamic:decode6(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5) -> {contact, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5} end,
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"email"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"subscribed"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(
<<"data"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(
<<"createdAt"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:field(
<<"updatedAt"/utf8>>,
fun gleam@dynamic:string/1
)
)
).
-spec count_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, count()} |
{error, list(gleam@dynamic:decode_error())}).
count_decoder() ->
gleam@dynamic:decode1(
fun(Field@0) -> {count, Field@0} end,
gleam@dynamic:field(<<"count"/utf8>>, fun gleam@dynamic:int/1)
).
-spec created_contact_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok,
created_contact()} |
{error, list(gleam@dynamic:decode_error())}).
created_contact_decoder() ->
gleam@dynamic:decode7(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6) -> {created_contact, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6} end,
gleam@dynamic:field(<<"success"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"email"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"subscribed"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(
<<"data"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:dynamic/1)
),
gleam@dynamic:field(<<"createdAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"updatedAt"/utf8>>, fun gleam@dynamic:string/1)
).
-spec deleted_contact_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok,
deleted_contact()} |
{error, list(gleam@dynamic:decode_error())}).
deleted_contact_decoder() ->
gleam@dynamic:decode7(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6) -> {deleted_contact, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6} end,
gleam@dynamic:field(<<"success"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"email"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"subscribed"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(
<<"data"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:dynamic/1)
),
gleam@dynamic:field(<<"createdAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"updatedAt"/utf8>>, fun gleam@dynamic:string/1)
).
-spec subscription_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok,
subscription()} |
{error, list(gleam@dynamic:decode_error())}).
subscription_decoder() ->
gleam@dynamic:decode3(
fun(Field@0, Field@1, Field@2) -> {subscription, Field@0, Field@1, Field@2} end,
gleam@dynamic:field(<<"success"/utf8>>, fun gleam@dynamic:bool/1),
gleam@dynamic:field(<<"contact"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"subscribed"/utf8>>, fun gleam@dynamic:bool/1)
).
-spec all_errors({ok, any()} | {error, list(gleam@dynamic:decode_error())}) -> list(gleam@dynamic:decode_error()).
all_errors(Result) ->
case Result of
{ok, _} ->
[];
{error, Errors} ->
Errors
end.
-spec email_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, email()} |
{error, list(gleam@dynamic:decode_error())}).
email_decoder() ->
fun(Dyn) ->
Id_dc = (gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1))(
Dyn
),
Message_id_dc = (gleam@dynamic:field(
<<"messageId"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Subject_dc = (gleam@dynamic:field(
<<"subject"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Body_dc = (gleam@dynamic:field(
<<"body"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Status_dc = (gleam@dynamic:field(
<<"status"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Project_id_dc = (gleam@dynamic:field(
<<"projectId"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Action_id_dc = (gleam@dynamic:field(
<<"actionId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
))(Dyn),
Campaign_id_dc = (gleam@dynamic:field(
<<"campaignId"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
))(Dyn),
Contact_id_dc = (gleam@dynamic:field(
<<"contactId"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Created_at_dc = (gleam@dynamic:field(
<<"createdAt"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
Updated_at_dc = (gleam@dynamic:field(
<<"updatedAt"/utf8>>,
fun gleam@dynamic:string/1
))(Dyn),
case {Id_dc,
Message_id_dc,
Subject_dc,
Body_dc,
Status_dc,
Project_id_dc,
Action_id_dc,
Campaign_id_dc,
Contact_id_dc,
Created_at_dc,
Updated_at_dc} of
{{ok, Id},
{ok, Message_id},
{ok, Subject},
{ok, Body},
{ok, Status},
{ok, Project_id},
{ok, Action_id},
{ok, Campaign_id},
{ok, Contact_id},
{ok, Created_at},
{ok, Updated_at}} ->
{ok,
{email,
Id,
Message_id,
Subject,
Body,
Status,
Project_id,
Action_id,
Campaign_id,
Contact_id,
Created_at,
Updated_at}};
{A, B, C, D, E, F, G, H, I, J, K} ->
{error,
gleam@list:concat(
[all_errors(A),
all_errors(B),
all_errors(C),
all_errors(D),
all_errors(E),
all_errors(F),
all_errors(G),
all_errors(H),
all_errors(I),
all_errors(J),
all_errors(K)]
)}
end
end.
-spec get_contact_decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok,
extended_contact()} |
{error, list(gleam@dynamic:decode_error())}).
get_contact_decoder() ->
gleam@dynamic:decode7(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6) -> {extended_contact, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6} end,
gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"email"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(
<<"data"/utf8>>,
gleam@dynamic:optional(fun gleam@dynamic:string/1)
),
gleam@dynamic:field(<<"createdAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(<<"updatedAt"/utf8>>, fun gleam@dynamic:string/1),
gleam@dynamic:field(
<<"triggers"/utf8>>,
gleam@dynamic:list(trigger_decoder())
),
gleam@dynamic:field(
<<"emails"/utf8>>,
gleam@dynamic:list(email_decoder())
)
).