defmodule MessageServer.MessageRequest do @type t :: %__MODULE__{ from: String.t(), to: String.t(), message: String.t() } defstruct [:from, :to, :message] @spec new(String.t(), String.t(), String.t()) :: t() def new(from, to, message) do %__MODULE__{from: from, to: to, message: message} end @spec valid?(t()) :: boolean() def valid?(%__MODULE__{from: from, to: to, message: message}) when is_binary(from) and is_binary(to) and is_binary(message) do String.trim(from) != "" and String.trim(to) != "" and String.trim(message) != "" end def valid?(_), do: false end