summaryrefslogtreecommitdiff
path: root/lib/powerdnsex
diff options
context:
space:
mode:
authorTiago Freire <code.tiago.frire@locaweb.com.br>2016-08-19 19:12:42 -0300
committerTiago Freire <code.tiago.frire@locaweb.com.br>2016-08-19 19:12:42 -0300
commitc7a91a55983b3a3de4f66b9c312170540c2a77cc (patch)
treef1b114e68dc3d27aa93a9bf86939ea5b9945afa6 /lib/powerdnsex
parentMerge 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.ex26
-rw-r--r--lib/powerdnsex/models/record.ex2
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