diff options
Diffstat (limited to 'lib/powerdnsex/models/resource_record_set.ex')
-rw-r--r-- | lib/powerdnsex/models/resource_record_set.ex | 69 |
1 files changed, 37 insertions, 32 deletions
diff --git a/lib/powerdnsex/models/resource_record_set.ex b/lib/powerdnsex/models/resource_record_set.ex index 1a410b1..dbb90b3 100644 --- a/lib/powerdnsex/models/resource_record_set.ex +++ b/lib/powerdnsex/models/resource_record_set.ex @@ -1,5 +1,4 @@ defmodule PowerDNSex.Models.ResourceRecordSet do - alias PowerDNSex.Models.Record defstruct [:name, :type, :ttl, :records, :changetype] @@ -10,21 +9,23 @@ defmodule PowerDNSex.Models.ResourceRecordSet do end def as_body(%__MODULE__{} = rrset) do - %{rrsets: [ - %{ - name: rrset.name, - type: rrset.type, - ttl: rrset.ttl, - changetype: rrset.changetype, - records: Record.as_body(rrset.records) - } - ]} - |> Poison.encode! + %{ + rrsets: [ + %{ + name: rrset.name, + type: rrset.type, + ttl: rrset.ttl, + changetype: rrset.changetype, + records: Record.as_body(rrset.records) + } + ] + } + |> Poison.encode!() end def find(rrsets, %{} = attrs) when is_list(rrsets) do - Enum.find(rrsets, fn(rrset) -> - Enum.all?(attrs, fn({attr, attr_value}) -> + Enum.find(rrsets, fn rrset -> + Enum.all?(attrs, fn {attr, attr_value} -> if Enum.member?(Map.keys(%__MODULE__{}), attr) do equal_attr?(attr, attr_value, rrset) else @@ -35,23 +36,26 @@ defmodule PowerDNSex.Models.ResourceRecordSet do end def update(%__MODULE__{} = rrset, %{} = new_attrs) do - Enum.reduce(@permited_attrs, rrset, fn(attr_name, rrset) -> - case Map.fetch(new_attrs, attr_name) do - {:ok, new_value} -> - if attr_name == :records do - new_value = Record.build(new_value) - end - %{rrset | attr_name => new_value} - _ -> rrset - end - end) + Enum.reduce(@permited_attrs, rrset, fn attr_name, rrset -> + case {attr_name, Map.fetch(new_attrs, attr_name)} do + {:records, {:ok, new_value}} -> + %{rrset | attr_name => Record.build(new_value)} + + {_, {:ok, new_value}} -> + %{rrset | attr_name => new_value} + + _ -> + rrset + end + end) end def nameservers(rrsets) do - rrset = Enum.find(rrsets, fn(rrset) -> rrset.type == "NS" end) - nameservers = case rrset do + rrset = Enum.find(rrsets, fn rrset -> rrset.type == "NS" end) + + case rrset do nil -> [] - _ -> Enum.map(rrset.records, &(&1.content) ) + _ -> Enum.map(rrset.records, & &1.content) end end @@ -62,10 +66,11 @@ defmodule PowerDNSex.Models.ResourceRecordSet do defp set_attrs(rrset, attr_name, attrs) do if Map.has_key?(attrs, attr_name) do - attr_value = case attr_name do - :records -> Record.build(Map.fetch!(attrs, attr_name)) - _ -> Map.fetch!(attrs, attr_name) - end + attr_value = + case attr_name do + :records -> Record.build(Map.fetch!(attrs, attr_name)) + _ -> Map.fetch!(attrs, attr_name) + end %{rrset | attr_name => attr_value} else @@ -80,7 +85,7 @@ defmodule PowerDNSex.Models.ResourceRecordSet do defp build_rrset(rrset_attrs) do %__MODULE__{} - |> Map.keys - |> Enum.reduce(%__MODULE__{}, &(set_attrs(&2, &1, rrset_attrs))) + |> Map.keys() + |> Enum.reduce(%__MODULE__{}, &set_attrs(&2, &1, rrset_attrs)) end end |