BentoSdk.ClientBehaviour behaviour (BentoSDK v0.1.0)

View Source

Behaviour for the Bento API client. This allows us to mock the client in tests.

Summary

Callbacks

add_field(email, key, value)

@callback add_field(email :: String.t(), key :: String.t(), value :: any()) ::
  {:ok, map()} | {:error, String.t()}

add_tag(email, tag)

@callback add_tag(email :: String.t(), tag :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

add_tag_via_event(email, tag)

@callback add_tag_via_event(email :: String.t(), tag :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

change_email(old_email, new_email)

@callback change_email(old_email :: String.t(), new_email :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

check_blacklist(params)

@callback check_blacklist(params :: map()) :: {:ok, map()} | {:error, String.t()}

create_broadcasts(broadcasts)

@callback create_broadcasts(broadcasts :: [map()]) :: {:ok, map()} | {:error, String.t()}

create_field(key)

@callback create_field(key :: String.t()) :: {:ok, map()} | {:error, String.t()}

create_subscriber(email)

@callback create_subscriber(email :: String.t()) :: {:ok, map()} | {:error, String.t()}

create_tag(name)

@callback create_tag(name :: String.t()) :: {:ok, map()} | {:error, String.t()}

find_or_create_subscriber(email)

@callback find_or_create_subscriber(email :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

find_subscriber(email)

@callback find_subscriber(email :: String.t()) ::
  {:ok, map() | nil} | {:error, String.t()}

geolocate(ip_address)

@callback geolocate(ip_address :: String.t()) :: {:ok, map()} | {:error, String.t()}

get_broadcasts()

@callback get_broadcasts() :: {:ok, [map()]} | {:error, String.t()}

get_fields()

@callback get_fields() :: {:ok, [map()]} | {:error, String.t()}

get_report_stats(report_id)

@callback get_report_stats(report_id :: String.t()) :: {:ok, map()} | {:error, String.t()}

get_segment_stats(segment_id)

@callback get_segment_stats(segment_id :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

get_site_stats()

@callback get_site_stats() :: {:ok, map()} | {:error, String.t()}

get_subscriber_growth(start_date, end_date)

@callback get_subscriber_growth(start_date :: String.t(), end_date :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

get_tags()

@callback get_tags() :: {:ok, [map()]} | {:error, String.t()}

guess_gender(name)

@callback guess_gender(name :: String.t()) :: {:ok, map()} | {:error, String.t()}

import_events(events)

@callback import_events(events :: [map()]) :: {:ok, map()} | {:error, String.t()}

import_subscribers(subscribers)

@callback import_subscribers(subscribers :: [map()]) ::
  {:ok, map()} | {:error, String.t()}

jesses_ruleset(email, opts)

@callback jesses_ruleset(email :: String.t(), opts :: Keyword.t()) ::
  {:ok, [String.t()]} | {:error, String.t()}

moderate_content(content)

@callback moderate_content(content :: String.t()) :: {:ok, map()} | {:error, String.t()}

remove_field(email, field)

@callback remove_field(email :: String.t(), field :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

remove_tag(email, tag)

@callback remove_tag(email :: String.t(), tag :: String.t()) ::
  {:ok, map()} | {:error, String.t()}

run_command(command, email, query)

@callback run_command(command :: String.t(), email :: String.t(), query :: any()) ::
  {:ok, map()} | {:error, String.t()}

send_bulk_emails(emails)

@callback send_bulk_emails(emails :: [map()]) :: {:ok, map()} | {:error, String.t()}

send_email(to, from, subject, html_body, personalizations)

@callback send_email(
  to :: String.t(),
  from :: String.t(),
  subject :: String.t(),
  html_body :: String.t(),
  personalizations :: map()
) :: {:ok, map()} | {:error, String.t()}

send_transactional_email(to, from, subject, html_body, personalizations)

@callback send_transactional_email(
  to :: String.t(),
  from :: String.t(),
  subject :: String.t(),
  html_body :: String.t(),
  personalizations :: map()
) :: {:ok, map()} | {:error, String.t()}

subscribe(email)

@callback subscribe(email :: String.t()) :: {:ok, map()} | {:error, String.t()}

track_event(email, type, fields, details)

@callback track_event(
  email :: String.t(),
  type :: String.t(),
  fields :: map(),
  details :: map()
) ::
  {:ok, map()} | {:error, String.t()}

unsubscribe(email)

@callback unsubscribe(email :: String.t()) :: {:ok, map()} | {:error, String.t()}

validate_email(email, opts)

@callback validate_email(email :: String.t(), opts :: Keyword.t()) ::
  {:ok, map()} | {:error, String.t()}