Current section

Files

Jump to
ex_api_ai lib api_ai entity.ex
Raw

lib/api_ai/entity.ex

defmodule ApiAi.Entity do
defstruct [:eid]
alias ApiAi.{Client}
def get(%__MODULE__{} = entity), do: Client.new() |> get(entity)
def get(eid) when is_binary(eid), do: Client.new() |> get(eid)
def get(%Client{} = client, %__MODULE__{eid: eid} = entity), do: get(client, eid)
def get(%Client{} = client, eid) when is_binary(eid) do
path = "/entities/#{eid}"
Client.perform(client, :get, path)
end
def create_entries(%__MODULE__{} = entity, entries), do: Client.new() |> create_entries(entity, entries)
def create_entries(%Client{} = client, %__MODULE__{eid: eid}, entries) when is_list(entries) do
path = "/entities/#{eid}/entries"
# Should be a list of %{"value" => "foo", "synonyms" => ["bar", "baz"]} maps
body = entries |> Poison.encode!
Client.perform(client, :post, path, body, [])
end
def update_entries(%__MODULE__{} = entity, entries), do: Client.new() |> update_entries(entity, entries)
def update_entries(%Client{} = client, %__MODULE__{eid: eid}, entries) when is_list(entries) do
path = "/entities/#{eid}/entries"
# Should be a list of %{"value" => "foo", "synonyms" => ["bar", "baz"]} maps
body = entries |> Poison.encode!
Client.perform(client, :put, path, body, [])
end
def delete_entries(%__MODULE__{} = entity, entries), do: Client.new() |> delete_entries(entity, entries)
def delete_entries(%Client{} = client, %__MODULE__{eid: eid}, entries) when is_list(entries) do
path = "/entities/#{eid}/entries"
# Should be a list of ["value1", "value2", "value3", ...]
body = entries |> Poison.encode!
Client.perform(client, :delete, path, body, [])
end
end