dotfiles/app/lib/prymn/messaging/messages.ex

29 lines
713 B
Elixir
Raw Normal View History

2024-02-02 18:53:52 +00:00
defmodule Prymn.Messaging.Messages.TerminalOutput do
defstruct [:id, :output]
end
# defmodule Prymn.Messaging.Messages.Health do
# defstruct [:cpu_status, :memory_status, :disk_status]
# end
2024-02-01 21:54:23 +00:00
defmodule Prymn.Messaging.Messages do
require Logger
2024-02-02 18:53:52 +00:00
alias Prymn.Messaging.Messages.TerminalOutput
@v1_prefix "agents.v1."
2024-02-01 21:54:23 +00:00
2024-02-02 18:53:52 +00:00
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}
2024-02-01 21:54:23 +00:00
end
end
2024-02-02 18:53:52 +00:00
defp extract_subject(@v1_prefix <> rest) do
[agent_id | subjects] = String.split(rest, ".")
{agent_id, subjects}
end
2024-02-01 21:54:23 +00:00
end