{-# LANGUAGE FlexibleInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module URI.ByteString.Extension where import Data.ByteString (ByteString) import Data.String (IsString (..)) import Data.Text (Text) import Data.Text.Encoding (decodeUtf8, encodeUtf8) import Lens.Micro import qualified Data.ByteString.Char8 as C8 import URI.ByteString instance IsString Scheme where fromString :: String -> Scheme fromString = ByteString -> Scheme Scheme (ByteString -> Scheme) -> (String -> ByteString) -> String -> Scheme forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ByteString forall a. IsString a => String -> a fromString instance IsString Host where fromString :: String -> Host fromString = ByteString -> Host Host (ByteString -> Host) -> (String -> ByteString) -> String -> Host forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ByteString forall a. IsString a => String -> a fromString instance IsString (URIRef Absolute) where fromString :: String -> URIRef Absolute fromString = (URIParseError -> URIRef Absolute) -> (URIRef Absolute -> URIRef Absolute) -> Either URIParseError (URIRef Absolute) -> URIRef Absolute forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (String -> URIRef Absolute forall a. HasCallStack => String -> a error (String -> URIRef Absolute) -> (URIParseError -> String) -> URIParseError -> URIRef Absolute forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParseError -> String forall a. Show a => a -> String show) URIRef Absolute -> URIRef Absolute forall a. a -> a id (Either URIParseError (URIRef Absolute) -> URIRef Absolute) -> (String -> Either URIParseError (URIRef Absolute)) -> String -> URIRef Absolute forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParserOptions -> ByteString -> Either URIParseError (URIRef Absolute) parseURI URIParserOptions strictURIParserOptions (ByteString -> Either URIParseError (URIRef Absolute)) -> (String -> ByteString) -> String -> Either URIParseError (URIRef Absolute) forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ByteString C8.pack instance IsString (URIRef Relative) where fromString :: String -> URIRef Relative fromString = (URIParseError -> URIRef Relative) -> (URIRef Relative -> URIRef Relative) -> Either URIParseError (URIRef Relative) -> URIRef Relative forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (String -> URIRef Relative forall a. HasCallStack => String -> a error (String -> URIRef Relative) -> (URIParseError -> String) -> URIParseError -> URIRef Relative forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParseError -> String forall a. Show a => a -> String show) URIRef Relative -> URIRef Relative forall a. a -> a id (Either URIParseError (URIRef Relative) -> URIRef Relative) -> (String -> Either URIParseError (URIRef Relative)) -> String -> URIRef Relative forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParserOptions -> ByteString -> Either URIParseError (URIRef Relative) parseRelativeRef URIParserOptions strictURIParserOptions (ByteString -> Either URIParseError (URIRef Relative)) -> (String -> ByteString) -> String -> Either URIParseError (URIRef Relative) forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ByteString C8.pack fromText :: Text -> Maybe URI fromText :: Text -> Maybe (URIRef Absolute) fromText = (URIParseError -> Maybe (URIRef Absolute)) -> (URIRef Absolute -> Maybe (URIRef Absolute)) -> Either URIParseError (URIRef Absolute) -> Maybe (URIRef Absolute) forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (Maybe (URIRef Absolute) -> URIParseError -> Maybe (URIRef Absolute) forall a b. a -> b -> a const Maybe (URIRef Absolute) forall a. Maybe a Nothing) URIRef Absolute -> Maybe (URIRef Absolute) forall a. a -> Maybe a Just (Either URIParseError (URIRef Absolute) -> Maybe (URIRef Absolute)) -> (Text -> Either URIParseError (URIRef Absolute)) -> Text -> Maybe (URIRef Absolute) forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParserOptions -> ByteString -> Either URIParseError (URIRef Absolute) parseURI URIParserOptions strictURIParserOptions (ByteString -> Either URIParseError (URIRef Absolute)) -> (Text -> ByteString) -> Text -> Either URIParseError (URIRef Absolute) forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> ByteString encodeUtf8 unsafeFromText :: Text -> URI unsafeFromText :: Text -> URIRef Absolute unsafeFromText = (URIParseError -> URIRef Absolute) -> (URIRef Absolute -> URIRef Absolute) -> Either URIParseError (URIRef Absolute) -> URIRef Absolute forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (String -> URIRef Absolute forall a. HasCallStack => String -> a error (String -> URIRef Absolute) -> (URIParseError -> String) -> URIParseError -> URIRef Absolute forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParseError -> String forall a. Show a => a -> String show) URIRef Absolute -> URIRef Absolute forall a. a -> a id (Either URIParseError (URIRef Absolute) -> URIRef Absolute) -> (Text -> Either URIParseError (URIRef Absolute)) -> Text -> URIRef Absolute forall b c a. (b -> c) -> (a -> b) -> a -> c . URIParserOptions -> ByteString -> Either URIParseError (URIRef Absolute) parseURI URIParserOptions strictURIParserOptions (ByteString -> Either URIParseError (URIRef Absolute)) -> (Text -> ByteString) -> Text -> Either URIParseError (URIRef Absolute) forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> ByteString encodeUtf8 toText :: URI -> Text toText :: URIRef Absolute -> Text toText = ByteString -> Text decodeUtf8 (ByteString -> Text) -> (URIRef Absolute -> ByteString) -> URIRef Absolute -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . URIRef Absolute -> ByteString forall a. URIRef a -> ByteString serializeURIRef' fromRelative :: Scheme -> Host -> RelativeRef -> URI fromRelative :: Scheme -> Host -> URIRef Relative -> URIRef Absolute fromRelative Scheme s Host h = (URIRef Absolute -> Host -> URIRef Absolute) -> Host -> URIRef Absolute -> URIRef Absolute forall a b c. (a -> b -> c) -> b -> a -> c flip URIRef Absolute -> Host -> URIRef Absolute forall a. URIRef a -> Host -> URIRef a withHost Host h (URIRef Absolute -> URIRef Absolute) -> (URIRef Relative -> URIRef Absolute) -> URIRef Relative -> URIRef Absolute forall b c a. (b -> c) -> (a -> b) -> a -> c . Scheme -> URIRef Relative -> URIRef Absolute forall a. Scheme -> URIRef a -> URIRef Absolute toAbsolute Scheme s withHost :: URIRef a -> Host -> URIRef a withHost :: forall a. URIRef a -> Host -> URIRef a withHost URIRef a u Host h = URIRef a u URIRef a -> (URIRef a -> URIRef a) -> URIRef a forall a b. a -> (a -> b) -> b & (Maybe Authority -> Identity (Maybe Authority)) -> URIRef a -> Identity (URIRef a) forall a (f :: * -> *). Functor f => (Maybe Authority -> f (Maybe Authority)) -> URIRef a -> f (URIRef a) authorityL ((Maybe Authority -> Identity (Maybe Authority)) -> URIRef a -> Identity (URIRef a)) -> (Maybe Authority -> Maybe Authority) -> URIRef a -> URIRef a forall s t a b. ASetter s t a b -> (a -> b) -> s -> t %~ Maybe Authority -> (Authority -> Maybe Authority) -> Maybe Authority -> Maybe Authority forall b a. b -> (a -> b) -> Maybe a -> b maybe (Authority -> Maybe Authority forall a. a -> Maybe a Just (Authority -> Maybe Authority) -> Authority -> Maybe Authority forall a b. (a -> b) -> a -> b $ Maybe UserInfo -> Host -> Maybe Port -> Authority Authority Maybe UserInfo forall a. Maybe a Nothing Host h Maybe Port forall a. Maybe a Nothing) (\Authority a -> Authority -> Maybe Authority forall a. a -> Maybe a Just (Authority -> Maybe Authority) -> Authority -> Maybe Authority forall a b. (a -> b) -> a -> b $ Authority a Authority -> (Authority -> Authority) -> Authority forall a b. a -> (a -> b) -> b & (Host -> Identity Host) -> Authority -> Identity Authority Lens' Authority Host authorityHostL ((Host -> Identity Host) -> Authority -> Identity Authority) -> Host -> Authority -> Authority forall s t a b. ASetter s t a b -> b -> s -> t .~ Host h) withPath :: URIRef a -> ByteString -> URIRef a withPath :: forall a. URIRef a -> ByteString -> URIRef a withPath URIRef a u ByteString p = URIRef a u URIRef a -> (URIRef a -> URIRef a) -> URIRef a forall a b. a -> (a -> b) -> b & (ByteString -> Identity ByteString) -> URIRef a -> Identity (URIRef a) forall a (f :: * -> *). Functor f => (ByteString -> f ByteString) -> URIRef a -> f (URIRef a) pathL ((ByteString -> Identity ByteString) -> URIRef a -> Identity (URIRef a)) -> ByteString -> URIRef a -> URIRef a forall s t a b. ASetter s t a b -> b -> s -> t .~ ByteString p withQuery :: URIRef a -> [(ByteString, ByteString)] -> URIRef a withQuery :: forall a. URIRef a -> [(ByteString, ByteString)] -> URIRef a withQuery URIRef a u [(ByteString, ByteString)] q = URIRef a u URIRef a -> (URIRef a -> URIRef a) -> URIRef a forall a b. a -> (a -> b) -> b & ((Query -> Identity Query) -> URIRef a -> Identity (URIRef a) forall a (f :: * -> *). Functor f => (Query -> f Query) -> URIRef a -> f (URIRef a) queryL ((Query -> Identity Query) -> URIRef a -> Identity (URIRef a)) -> (([(ByteString, ByteString)] -> Identity [(ByteString, ByteString)]) -> Query -> Identity Query) -> ([(ByteString, ByteString)] -> Identity [(ByteString, ByteString)]) -> URIRef a -> Identity (URIRef a) forall b c a. (b -> c) -> (a -> b) -> a -> c . ([(ByteString, ByteString)] -> Identity [(ByteString, ByteString)]) -> Query -> Identity Query Lens' Query [(ByteString, ByteString)] queryPairsL) (([(ByteString, ByteString)] -> Identity [(ByteString, ByteString)]) -> URIRef a -> Identity (URIRef a)) -> ([(ByteString, ByteString)] -> [(ByteString, ByteString)]) -> URIRef a -> URIRef a forall s t a b. ASetter s t a b -> (a -> b) -> s -> t %~ ([(ByteString, ByteString)] -> [(ByteString, ByteString)] -> [(ByteString, ByteString)] forall a. [a] -> [a] -> [a] ++ [(ByteString, ByteString)] q)