module Network.DNS.Cache.Utils where
import qualified Data.ByteString.Char8 as BS
import Data.Char (isDigit)
import Network.DNS.Cache.Types
isIPAddr :: Domain -> Bool
isIPAddr hn = length groups == 4 && all ip groups
where
groups = BS.split '.' hn
ip x = BS.length x <= 3
&& BS.all isDigit x
&& read (BS.unpack x) <= (255 :: Int)
fromResult :: Result -> HostAddress
fromResult (Hit addr) = addr
fromResult (Resolved addr) = addr
fromResult (Numeric addr) = addr
fromEither :: Either DNSError Result -> Maybe HostAddress
fromEither (Right res) = Just (fromResult res)
fromEither (Left _) = Nothing