25 lines
759 B
Elixir
25 lines
759 B
Elixir
defmodule BDS.Desktop.ShellController do
|
|
@moduledoc false
|
|
|
|
def index_html do
|
|
BDS.UI.ShellPage.render()
|
|
end
|
|
|
|
def task_status_json do
|
|
Jason.encode!(BDS.Tasks.status_snapshot())
|
|
end
|
|
|
|
def command_json(payload) when is_map(payload) do
|
|
action = Map.get(payload, "action") || Map.get(payload, :action)
|
|
params = Map.get(payload, "params") || Map.get(payload, :params) || %{}
|
|
|
|
case BDS.Desktop.ShellCommands.execute(action, params) do
|
|
{:ok, result} -> Jason.encode!(%{status: "ok", result: result})
|
|
{:error, error} -> Jason.encode!(%{status: "error", error: normalize_error(error)})
|
|
end
|
|
end
|
|
|
|
defp normalize_error(error) when is_map(error), do: error
|
|
defp normalize_error(error), do: %{message: inspect(error)}
|
|
end
|