]> gitweb.michael.orlitzky.com - haeredes.git/blobdiff - src/DNS.hs
Get it working for NS records.
[haeredes.git] / src / DNS.hs
diff --git a/src/DNS.hs b/src/DNS.hs
new file mode 100644 (file)
index 0000000..08d4f21
--- /dev/null
@@ -0,0 +1,29 @@
+module DNS (
+  normalize
+  )
+where
+
+import qualified Data.ByteString.Char8 as BS (
+  append,
+  last,
+  map,
+  pack )
+import Data.Char (toLower)
+import Network.DNS.Types (Domain)
+
+-- | Normalize the given name by lowercasing and appending a trailing
+--   dot (the root) if necessary.
+normalize :: Domain -> Domain
+normalize = normalize_case . normalize_root
+
+
+normalize_root :: Domain -> Domain
+normalize_root d
+  | BS.last d == '.' = d
+  | otherwise = d `BS.append` trailing_dot
+    where
+      trailing_dot = BS.pack "."
+
+
+normalize_case :: Domain -> Domain
+normalize_case = BS.map toLower