28 lines
713 B
Elixir
28 lines
713 B
Elixir
defmodule Prymn.Messaging.Messages.TerminalOutput do
|
|
defstruct [:id, :output]
|
|
end
|
|
|
|
# defmodule Prymn.Messaging.Messages.Health do
|
|
# defstruct [:cpu_status, :memory_status, :disk_status]
|
|
# end
|
|
|
|
defmodule Prymn.Messaging.Messages do
|
|
require Logger
|
|
alias Prymn.Messaging.Messages.TerminalOutput
|
|
|
|
@v1_prefix "agents.v1."
|
|
|
|
def handle_message(subject, payload) do
|
|
{_agent_id, subjects} = extract_subject(subject)
|
|
|
|
case subjects do
|
|
["health"] -> Jason.decode!(payload)
|
|
["terminal", id, "output"] -> %TerminalOutput{id: id, output: payload}
|
|
end
|
|
end
|
|
|
|
defp extract_subject(@v1_prefix <> rest) do
|
|
[agent_id | subjects] = String.split(rest, ".")
|
|
{agent_id, subjects}
|
|
end
|
|
end
|