diff options
author | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-19 19:12:42 -0300 |
---|---|---|
committer | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-19 19:12:42 -0300 |
commit | c7a91a55983b3a3de4f66b9c312170540c2a77cc (patch) | |
tree | f1b114e68dc3d27aa93a9bf86939ea5b9945afa6 /lib/powerdnsex | |
parent | Merge pull request #3 from akaKuruma/delete_zone (diff) |
Add Delete Record feature
Diffstat (limited to 'lib/powerdnsex')
-rw-r--r-- | lib/powerdnsex/managers/records_manager.ex | 26 | ||||
-rw-r--r-- | lib/powerdnsex/models/record.ex | 2 |
2 files changed, 20 insertions, 8 deletions
diff --git a/lib/powerdnsex/managers/records_manager.ex b/lib/powerdnsex/managers/records_manager.ex index f9e71e1..7ac83ca 100644 --- a/lib/powerdnsex/managers/records_manager.ex +++ b/lib/powerdnsex/managers/records_manager.ex @@ -5,20 +5,20 @@ defmodule PowerDNSex.RecordsManager do alias PowerDNSex.Models.ResourceRecordSet, as: RRset alias HTTPoison.Response - def create(%Zone{url: nil}, _) do - raise "[Records Manager] Zone URL attribute is empty!" - end def create(%Zone{} = zone, %{} = rrset_attrs) do rrset_attrs = Map.merge(rrset_attrs, %{changetype: "REPLACE"}) - - zone.url - |> HttpClient.patch!(RRset.as_body(RRset.build(rrset_attrs))) - |> process_request_response + patch(zone, rrset_attrs) end def update(%Zone{} = zone, %{} = rrset_attrs) do - create(zone, rrset_attrs) + rrset_attrs = Map.merge(rrset_attrs, %{changetype: "REPLACE"}) + patch(zone, rrset_attrs) + end + + def delete(%Zone{} = zone, %{} = rrset_attrs) do + rrset_attrs = Map.merge(rrset_attrs, %{changetype: "DELETE"}) + patch(zone, rrset_attrs) end ### @@ -31,4 +31,14 @@ defmodule PowerDNSex.RecordsManager do s when s >= 300 -> body |> Poison.decode!(as: %Error{}) end end + + defp patch(%Zone{url: nil}, _) do + raise "[Records Manager] Zone URL attribute is empty!" + end + + defp patch(%Zone{} = zone, %{} = rrset_attrs) do + zone.url + |> HttpClient.patch!(RRset.as_body(RRset.build(rrset_attrs))) + |> process_request_response + end end diff --git a/lib/powerdnsex/models/record.ex b/lib/powerdnsex/models/record.ex index 57378fc..a494a07 100644 --- a/lib/powerdnsex/models/record.ex +++ b/lib/powerdnsex/models/record.ex @@ -13,6 +13,8 @@ defmodule PowerDNSex.Models.Record do %__MODULE__{content: attrs.content, disabled: attrs.disabled} end + def as_body(nil), do: [] + def as_body(content) when is_list(content) do Enum.reduce(content, [], &(&2 ++ [as_body(&1)])) end |