defmodule Integrations.Dns.Display do @moduledoc """ Dashboard panel for `Integrations.Dns` (same package). Nested under the monitor's own namespace deliberately — the package's top-level module name never changes, and this module's name is guaranteed distinct from any separately-published standalone display package. `Display.BundledDefault` auto-hooks this whenever `Integrations.Dns` starts, the same as if they were still one module. """ use CodeNameRaven.Display, category: :infrastructure, size_hint: :medium @default_type "A" @default_port 53 @impl true def display_name, do: "DNS" @impl true def compatible_monitors, do: [Integrations.Dns] @impl true def render(assigns) do result = assigns[:result] assigns = Map.merge(assigns, %{result: result}) ~H"""

<%= @config.name || dns_title(@config.params) %>

<%= dns_subtitle(@config.params) %>

<%= answer %>
Expected: <%= @result.expected %>
""" end # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- defp dns_title(params) do query = params[:query] || params["query"] || "DNS" type = params[:type] || params["type"] || @default_type "#{query} (#{type})" end defp dns_subtitle(params) do ns = params[:nameserver] || params["nameserver"] || "?" port = params[:nameserver_port] || params["nameserver_port"] || @default_port "#{ns}:#{port}" end end