summaryrefslogtreecommitdiff
path: root/lib/powerdnsex/managers/records_manager.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/powerdnsex/managers/records_manager.ex')
-rw-r--r--lib/powerdnsex/managers/records_manager.ex17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/powerdnsex/managers/records_manager.ex b/lib/powerdnsex/managers/records_manager.ex
index 7ac83ca..a8c67e5 100644
--- a/lib/powerdnsex/managers/records_manager.ex
+++ b/lib/powerdnsex/managers/records_manager.ex
@@ -1,8 +1,9 @@
-defmodule PowerDNSex.RecordsManager do
+defmodule PowerDNSex.Managers.RecordsManager do
alias PowerDNSex.HttpClient
alias PowerDNSex.Models.{Zone, Record, Error}
- alias PowerDNSex.Models.ResourceRecordSet, as: RRset
+ alias PowerDNSex.Models.ResourceRecordSet, as: RRSet
+ alias PowerDNSex.Managers.ZonesManager
alias HTTPoison.Response
@@ -11,6 +12,11 @@ defmodule PowerDNSex.RecordsManager do
patch(zone, rrset_attrs)
end
+ def show(zone_name, %{} = rrset_attrs) do
+ zone = ZonesManager.show(zone_name)
+ RRSet.find(zone.rrsets, rrset_attrs)
+ end
+
def update(%Zone{} = zone, %{} = rrset_attrs) do
rrset_attrs = Map.merge(rrset_attrs, %{changetype: "REPLACE"})
patch(zone, rrset_attrs)
@@ -38,7 +44,12 @@ defmodule PowerDNSex.RecordsManager do
defp patch(%Zone{} = zone, %{} = rrset_attrs) do
zone.url
- |> HttpClient.patch!(RRset.as_body(RRset.build(rrset_attrs)))
+ |> HttpClient.patch!(RRSet.as_body(RRSet.build(rrset_attrs)))
|> process_request_response
end
+
+ defp has_attrs?(rrset, attrs) do
+ Map.keys(attrs)
+ |> Enum.all?(&(equal_attr?(&1, attrs[&1], rrsets)))
+ end
end