module Crypto.JOSE.Types.URI
( uriFromJSON
, uriToJSON
) where
import Data.Aeson
import Data.Aeson.Types (Parser)
import qualified Data.Text as T
import Network.URI (URI, parseURI)
uriFromJSON :: Value -> Parser URI
uriFromJSON :: Value -> Parser URI
uriFromJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"URI" forall a b. (a -> b) -> a -> b
$ forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"not a URI") forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Maybe URI
parseURI forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack
uriToJSON :: URI -> Value
uriToJSON :: URI -> Value
uriToJSON = Text -> Value
String forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> String
show