lib/plugin_manager/example/mishka_sending/sending_sms.ex

defmodule MsihkaSendingEmailPlugin.SendingSMS do
  # This module was just made for testing
  alias MsihkaSendingEmailPlugin.TestEvent
  use MishkaInstaller.Hook,
      module: __MODULE__,
      behaviour: TestEvent,
      event: :on_test_event,
      initial: []

  def initial(args) do
    Logger.warn("SendingSMS plugin was started")
    event = %PluginState{name: "MsihkaSendingEmailPlugin.SendingSMS", event: Atom.to_string(@ref), priority: 1}
    Hook.register(event: event)
    {:ok, @ref, args}
  end

  def call(%TestEvent{} = state) do
    new_state = Map.merge(state, %{ip: "128.0.1.1"})
    {:reply, new_state}
  end

  def stop(%PluginState{} = registerd_info) do
    case Hook.stop(module: registerd_info.name) do
      {:ok, :stop, _msg} -> {:ok, @ref, registerd_info}
      {:error, :stop, msg} -> {:error, @ref, msg}
    end
  end

  def restart(%PluginState{} = registerd_info) do
    case Hook.restart(module: registerd_info.name) do
      {:ok, :restart, _msg} -> {:ok, @ref, registerd_info}
      {:error, :restart, msg} -> {:error, @ref, msg}
    end
  end
end