{-# LANGUAGE FlexibleContexts  #-}
module Imm.Aeson where

-- {{{ Imports
import           Data.Aeson

import           URI.ByteString
-- }}}

parseJsonURI :: MonadPlus m => Value -> m URI
parseJsonURI (String s) = either (const mzero) return $ parseURI laxURIParserOptions $ encodeUtf8 s
parseJsonURI _          = mzero

toJsonURI :: URI -> Value
toJsonURI = String . decodeUtf8 . serializeURIRef'