{-# OPTIONS_GHC -fno-warn-orphans #-} module URI.ByteString.Aeson () where import Data.Aeson import qualified Data.ByteString as BS import URI.ByteString import Data.Text.Encoding import Control.Monad class ParseJSONURI a where parseJSONURI :: BS.ByteString -> Either URIParseError (URIRef a) instance ParseJSONURI Absolute where parseJSONURI :: ByteString -> Either URIParseError (URIRef Absolute) parseJSONURI = URIParserOptions -> ByteString -> Either URIParseError (URIRef Absolute) parseURI URIParserOptions laxURIParserOptions instance ParseJSONURI Relative where parseJSONURI :: ByteString -> Either URIParseError (URIRef Relative) parseJSONURI = URIParserOptions -> ByteString -> Either URIParseError (URIRef Relative) parseRelativeRef URIParserOptions laxURIParserOptions instance ParseJSONURI a => FromJSON (URIRef a) where parseJSON :: Value -> Parser (URIRef a) parseJSON = Value -> Parser Text forall a. FromJSON a => Value -> Parser a parseJSON (Value -> Parser Text) -> (Text -> Parser (URIRef a)) -> Value -> Parser (URIRef a) forall (m :: * -> *) a b c. Monad m => (a -> m b) -> (b -> m c) -> a -> m c >=> (URIParseError -> Parser (URIRef a)) -> (URIRef a -> Parser (URIRef a)) -> Either URIParseError (URIRef a) -> Parser (URIRef a) forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (String -> Parser (URIRef a) forall a. String -> Parser a forall (m :: * -> *) a. MonadFail m => String -> m a fail (String -> Parser (URIRef a)) -> (URIParseError -> String) -> URIParseError -> Parser (URIRef a) forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParseError -> String forall a. Show a => a -> String show) URIRef a -> Parser (URIRef a) forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure (Either URIParseError (URIRef a) -> Parser (URIRef a)) -> (Text -> Either URIParseError (URIRef a)) -> Text -> Parser (URIRef a) forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> Either URIParseError (URIRef a) forall a. ParseJSONURI a => ByteString -> Either URIParseError (URIRef a) parseJSONURI (ByteString -> Either URIParseError (URIRef a)) -> (Text -> ByteString) -> Text -> Either URIParseError (URIRef a) forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> ByteString encodeUtf8 instance ToJSON (URIRef f) where toJSON :: URIRef f -> Value toJSON = Text -> Value forall a. ToJSON a => a -> Value toJSON (Text -> Value) -> (URIRef f -> Text) -> URIRef f -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> Text decodeUtf8 (ByteString -> Text) -> (URIRef f -> ByteString) -> URIRef f -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . URIRef f -> ByteString forall a. URIRef a -> ByteString serializeURIRef'