packages feed

ip-1.7.8: test/Naive.hs

module Naive where

import Data.ByteString (ByteString)
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Text.Encoding (encodeUtf8)
import qualified Net.IPv4 as IPv4
import Net.Types (IPv4 (..))
import Text.Read (readMaybe)

encodeByteString :: IPv4 -> ByteString
encodeByteString = encodeUtf8 . encodeText

encodeText :: IPv4 -> Text
encodeText i =
  Text.pack $
    concat
      [ show a
      , "."
      , show b
      , "."
      , show c
      , "."
      , show d
      ]
 where
  (a, b, c, d) = IPv4.toOctets i

decodeText :: Text -> Maybe IPv4
decodeText t =
  case mapM (readMaybe . Text.unpack) (Text.splitOn (Text.pack ".") t) of
    Just [a, b, c, d] -> Just (IPv4.fromOctets a b c d)
    _ -> Nothing