From c20723cfb5c3af983a42a54e1233e9b6f0550ce1 Mon Sep 17 00:00:00 2001 From: Davi Oliveira Date: Wed, 10 Feb 2021 18:36:38 -0300 Subject: Add zone without rrset --- lib/powerdnsex.ex | 4 ++++ lib/powerdnsex/gen_server/server.ex | 4 ++++ lib/powerdnsex/managers/records_manager.ex | 4 ++++ lib/powerdnsex/managers/zones_manager.ex | 12 ++++++++++++ 4 files changed, 24 insertions(+) (limited to 'lib') diff --git a/lib/powerdnsex.ex b/lib/powerdnsex.ex index b77389c..6b71f08 100644 --- a/lib/powerdnsex.ex +++ b/lib/powerdnsex.ex @@ -48,6 +48,10 @@ defmodule PowerDNSex do call({:show_zone, zone, server_name}) end + def get_zone(zone, server_name \\ @default_server) when is_binary(zone) do + call({:get_zone, zone, server_name}) + end + @spec delete_zone(String.t(), String.t()) :: :ok | {:error, String.t()} @doc """ Delete specific Zone on PowerDNS diff --git a/lib/powerdnsex/gen_server/server.ex b/lib/powerdnsex/gen_server/server.ex index df8a453..e015c7e 100644 --- a/lib/powerdnsex/gen_server/server.ex +++ b/lib/powerdnsex/gen_server/server.ex @@ -24,6 +24,10 @@ defmodule PowerDNSex.Server do {:reply, ZonesManager.show(zone, server_name), state} end + def handle_call({:get_zone, zone, server_name}, _from, state) do + {:reply, ZonesManager.get_zone(zone, server_name), state} + end + def handle_call({:delete_zone, zone, server_name}, _from, state) do {:reply, ZonesManager.delete(zone, server_name), state} end diff --git a/lib/powerdnsex/managers/records_manager.ex b/lib/powerdnsex/managers/records_manager.ex index f2ef6b5..89b8d4b 100644 --- a/lib/powerdnsex/managers/records_manager.ex +++ b/lib/powerdnsex/managers/records_manager.ex @@ -12,6 +12,10 @@ defmodule PowerDNSex.Managers.RecordsManager do patch(zone, rrset_attrs) end + def put_zone(%Zone{} = zone, %{} = rrset_attrs) do + create(zone, rrset_attrs) + end + def show(zone_name, %{} = rrset_attrs) do case ZonesManager.show(zone_name) do {:ok, zone} -> RRSet.find(zone.rrsets, rrset_attrs) diff --git a/lib/powerdnsex/managers/zones_manager.ex b/lib/powerdnsex/managers/zones_manager.ex index 23bab1d..1f16a6c 100644 --- a/lib/powerdnsex/managers/zones_manager.ex +++ b/lib/powerdnsex/managers/zones_manager.ex @@ -20,6 +20,14 @@ defmodule PowerDNSex.Managers.ZonesManager do |> process_request_response end + def get_zone(zone_name, server_name \\ @default_server) + when is_bitstring(zone_name) do + server_name + |> zone_path_light(zone_name) + |> HttpClient.get!() + |> process_request_response + end + def delete(zone_name, server_name \\ @default_server) when is_bitstring(zone_name) do server_name @@ -40,6 +48,10 @@ defmodule PowerDNSex.Managers.ZonesManager do zone_path(server_name) <> "/#{zone_name}" end + defp zone_path_light(server_name, zone_name) when is_bitstring(server_name) do + "api/v1/servers/#{server_name}/zones/#{zone_name}?rrsets=false" + end + defp process_request_response(%Response{body: body, status_code: status}) do case status do s when s == 204 -> -- cgit v1.2.3