defmodule ExMicrosoftBot.Models.ChannelAccount do @moduledoc """ Microsoft bot channel account structure which corresponde to a user or bot """ @derive [Poison.Encoder] defstruct [:id, :name, :objectId, :givenName, :surname, :email, :userPrincipalName, :tenantId] @type t :: %ExMicrosoftBot.Models.ChannelAccount{ id: String.t(), name: String.t(), objectId: String.t(), givenName: String.t(), surname: String.t(), email: String.t(), userPrincipalName: String.t(), tenantId: String.t() } @doc """ Decode a map into `ExMicrosoftBot.Models.ChannelAccount` """ @spec parse(map) :: {:ok, ExMicrosoftBot.Models.ChannelAccount.t()} def parse(param) when is_map(param) do {:ok, Poison.Decode.transform(param, %{as: decoding_map()})} end @doc """ Decode a list of maps into a list of `ExMicrosoftBot.Models.ChannelAccount` """ @spec parse(list) :: {:ok, [ExMicrosoftBot.Models.ChannelAccount.t()]} def parse(param) when is_list(param) do {:ok, Poison.Decode.transform(param, %{as: [decoding_map()]})} end @doc """ Decode a string into `ExMicrosoftBot.Models.ChannelAccount` """ @spec parse(String.t()) :: ExMicrosoftBot.Models.ChannelAccount.t() def parse(param) when is_binary(param) do elem(parse(Poison.decode!(param)), 1) end @doc false def decoding_map() do %ExMicrosoftBot.Models.ChannelAccount{} end end