farmbot v6.4.1 Farmbot.Bootstrap.Supervisor View Source
Bootstraps the application.
It is expected that there is authorization credentials in the application’s
environment by this point. This can be configured via a Farmbot.Init
module.
For example:
config.exs
use Mix.Config
config :farmbot, :init, [
Farmbot.Configurator
]
config :farmbot, :behaviour,
authorization: Farmbot.Configurator
farmbot_configurator.ex
defmodule Farmbot.Configurator do
@moduledoc false
@behaviour Farmbot.System.Init
@behaviour Farmbot.Bootstrap.Authorization
# Callback for Farmbot.System.Init.
# This can return {:ok, pid} if it should be a supervisor.
def start_link(_args, _opts) do
creds = [
email: "some_user@some_server.org",
password: "some_secret_password_dont_actually_store_in_plain_text",
server: "https://my.farmbot.io"
]
Application.put_env(:farmbot, :behaviour, creds)
:ignore
end
# Callback for Farmbot.Bootstrap.Authorization.
# Should return `{:ok, token}` where `token` is a binary jwt, or
# {:error, reason} reason can be anything, but a binary is easiest to
# Parse.
def authorize(email, password, server) do
# some intense http stuff or whatever.
{:ok, token}
end
end
This will cause the creds
to be stored in the application’s environment.
This moduld then will try to use the configured module to authorize
.
If either of these things error, the bot try to factory reset
Link to this section Summary
Link to this section Types
Authorization credentials.
Link to this section Functions
Returns a specification to start this module under a supervisor.
See Supervisor
.
Start Bootstrap services.