mobilizon.chapril.org-mobil.../lib/service/error_reporting/error_reporting.ex

36 lines
874 B
Elixir

defmodule Mobilizon.Service.ErrorReporting do
@moduledoc """
Mpdule to load and configure error reporting adapters
"""
@callback enabled? :: boolean()
@callback configure :: any()
@callback handle_event(list(atom()), map(), map(), any()) :: any()
@spec adapter :: module() | nil
def adapter do
adapter = Mobilizon.Config.get([__MODULE__, :adapter])
if adapter && adapter.enabled?(), do: adapter, else: nil
end
@spec handle_event(list(atom()), map(), map(), any()) :: any()
def handle_event(event_name, event_measurements, event_metadata, handler_config) do
adapter = adapter()
if adapter do
adapter.handle_event(event_name, event_measurements, event_metadata, handler_config)
end
end
@spec configure :: any()
def configure do
adapter = adapter()
if adapter do
adapter.configure()
end
end
end