packages feed

hbro-1.2.0.0: library/Network/URI/Monadic.hs

{-# LANGUAGE DeriveDataTypeable #-}
-- | Functions from 'Network.URI' rewritten with 'MonadError' instead of 'Maybe'.
module Network.URI.Monadic
    ( module X
    , parseURIReference
    , parseURI
    ) where

-- {{{ Imports
import Hbro.Prelude

import Control.Monad.Except (MonadError(..), throwError)

import Network.URI as X hiding(parseURIReference, parseURI)
import qualified Network.URI as N
-- }}}

-- | Error message
invalidURI :: Text -> Text
invalidURI uri = "Invalid URI: " ++ uri

parseURIReference :: (MonadError Text m) => Text -> m URI
parseURIReference uri = maybe (throwError $ invalidURI uri) return . N.parseURIReference $ unpack uri

parseURI :: (MonadError Text m) => Text -> m URI
parseURI uri = maybe (throwError $ invalidURI uri) return . N.parseURI $ unpack uri