Current section
Files
Jump to
Current section
Files
lib/sendinc/translator/message_translator.ex
defmodule Sendinc.MessageTranslator do
@moduledoc """
This module translates a struct to a url with params to make request to
"""
def translate(%{errors: errors}, _) when errors != [] do
raise "Error in changeset!"
end
def translate(struct, :create) do
base(:create) ++ fields(struct) ++ ["https://rest.sendinc.com/message.json"]
end
defp base(:create), do: ["-XPOST"]
defp base(:get), do: []
defp fields(struct) do
struct.changes
|> Map.keys()
|> Enum.reduce([], fn(field, acc) ->
acc ++ ["-F", "#{to_string(field)}=#{translate_field(struct, field)}"]
end)
end
defp translate_field(struct, many)
when many in [:recipients, :recipients_cc, :recipients_bcc] do
struct.changes
|> Map.get(many)
|> Enum.map(&Map.get(&1.changes, :email))
|> Enum.join(",")
end
defp translate_field(struct, :attachments) do
struct.changes
|> Map.get(:attachments)
|> Enum.map(&Map.get(&1.changes, :path))
|> Enum.join(",")
end
defp translate_field(struct, field), do: Map.get(struct.changes, field)
end