Current section
Files
Jump to
Current section
Files
lib/customerio.ex
defmodule Customerio do
import Customerio.Util
@type value :: number | String.t | atom()
@spec identify(id :: number | binary, data_map :: %{}, opts :: keyword(value)) :: :ok
def identify(id, data_map, opts \\ []) do
send_request(
:put,
"customers/#{URI.encode(id |> to_string)}",
data_map,
opts
)
end
def identify!(id, data_map, opts \\ []) do
case identify(id, data_map, opts) do
{:ok, s = %Customerio.Success{} } -> s
{:error, e} -> raise e
end
end
def delete(id, opts \\ []) do
send_request(
:delete,
"customers/#{URI.encode(id |> to_string)}",
%{},
opts
)
end
def delete!(id, opts \\ []) do
case delete(id, opts) do
{:ok, s = %Customerio.Success{}} -> s
{:error, e} -> raise e
end
end
def track(id, name, data_map, opts \\ []) do
send_request(
:post,
"customers/#{URI.encode(id |> to_string)}/events",
%{name: name, data: data_map},
opts
)
end
def track!(id, name, data_map, opts \\ []) do
case track(id, name, data_map, opts) do
{:ok, s = %Customerio.Success{}} -> s
{:error, e} -> raise e
end
end
def anonymous_track(name, data_map, opts \\ []) do
send_request(
:post,
"events",
%{name: name, data: data_map},
opts
)
end
def anonymous_track!(name, data_map, opts \\ []) do
case anonymous_track(name, data_map, opts) do
{:ok, s = %Customerio.Success{}} -> s
{:error, e} -> raise e
end
end
def track_page_view(id, page_name, data_map, opts \\ []) do
send_request(
:post,
"customers/#{URI.encode(id |> to_string)}/events",
%{name: page_name, type: "page", data: data_map},
opts
)
end
def track_page_view!(id, page_name, data_map, opts \\ []) do
case track_page_view(id, page_name, data_map, opts) do
{:ok, s = %Customerio.Success{}} -> s
{:error, e} -> raise e
end
end
end