imm-1.0.0.0: src/lib/Imm/Aeson.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Imm.Aeson where
-- {{{ Imports
import Imm.Prelude
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'