defmodule ExMicrosoftBot do @moduledoc """ Starts the application for connecting to Microsoft Bot Services. Make sure that the application id and password for your bot is set in config as: ``` config :ex_microsoftbot, app_id: "BOT_APP_ID", app_password: "BOT_APP_PASSWORD" ``` """ use Application import Supervisor.Spec, warn: false def start(_type, _args) do children = [ worker(ExMicrosoftBot.TokenManager, [get_auth_data()]), worker(ExMicrosoftBot.SigningKeysManager, []) ] opts = [strategy: :one_for_one, name: ExMicrosoftBot.Supervisor] Supervisor.start_link(children, opts) end # Private defp get_auth_data do app_id = Application.get_env(:ex_microsoftbot, :app_id) app_password = Application.get_env(:ex_microsoftbot, :app_password) create_auth_data(app_id, app_password) end defp create_auth_data(nil, _), do: throw("No auth data defined for ex_microsoftbot.") defp create_auth_data(_, nil), do: throw("No auth data defined for ex_microsoftbot.") defp create_auth_data(app_id, app_password) do %ExMicrosoftBot.Models.AuthData{ app_id: app_id, app_password: app_password } end end