{-# LANGUAGE CPP #-}
module Network.URI.Encode
( encode
, encodeWith
, encodeText
, encodeTextWith
, encodeTextToBS
, encodeTextToBSWith
, encodeByteString
, encodeByteStringWith
, decode
, decodeText
, decodeBSToText
, decodeByteString
, isAllowed
) where
import Data.Text
import Network.URI
import qualified Data.ByteString.Char8 as U
import qualified Data.ByteString.UTF8 as U
encode :: String -> String
encode :: String -> String
encode = (Char -> Bool) -> String -> String
encodeWith Char -> Bool
isAllowed
encodeWith :: (Char -> Bool) -> String -> String
encodeWith :: (Char -> Bool) -> String -> String
encodeWith Char -> Bool
predicate = (Char -> Bool) -> String -> String
escapeURIString Char -> Bool
predicate (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
fixUtf8
decode :: String -> String
decode :: String -> String
decode = String -> String
unfixUtf8 (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
unEscapeString
encodeText :: Text -> Text
encodeText :: Text -> Text
encodeText = String -> Text
pack (String -> Text) -> (Text -> String) -> Text -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
encode (String -> String) -> (Text -> String) -> Text -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack
encodeTextWith :: (Char -> Bool) -> Text -> Text
encodeTextWith :: (Char -> Bool) -> Text -> Text
encodeTextWith Char -> Bool
predicate = String -> Text
pack (String -> Text) -> (Text -> String) -> Text -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> String -> String
encodeWith Char -> Bool
predicate (String -> String) -> (Text -> String) -> Text -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack
decodeText :: Text -> Text
decodeText :: Text -> Text
decodeText = String -> Text
pack (String -> Text) -> (Text -> String) -> Text -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
decode (String -> String) -> (Text -> String) -> Text -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack
encodeTextToBS :: Text -> U.ByteString
encodeTextToBS :: Text -> ByteString
encodeTextToBS = String -> ByteString
U.pack (String -> ByteString) -> (Text -> String) -> Text -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
encode (String -> String) -> (Text -> String) -> Text -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack
encodeTextToBSWith :: (Char -> Bool) -> Text -> U.ByteString
encodeTextToBSWith :: (Char -> Bool) -> Text -> ByteString
encodeTextToBSWith Char -> Bool
predicate = String -> ByteString
U.pack (String -> ByteString) -> (Text -> String) -> Text -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> String -> String
encodeWith Char -> Bool
predicate (String -> String) -> (Text -> String) -> Text -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack
decodeBSToText :: U.ByteString -> Text
decodeBSToText :: ByteString -> Text
decodeBSToText = String -> Text
pack (String -> Text) -> (ByteString -> String) -> ByteString -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
decode (String -> String)
-> (ByteString -> String) -> ByteString -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> String
U.unpack
encodeByteString :: U.ByteString -> U.ByteString
encodeByteString :: ByteString -> ByteString
encodeByteString = String -> ByteString
U.pack (String -> ByteString)
-> (ByteString -> String) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
encode (String -> String)
-> (ByteString -> String) -> ByteString -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> String
U.toString
encodeByteStringWith :: (Char -> Bool) -> U.ByteString -> U.ByteString
encodeByteStringWith :: (Char -> Bool) -> ByteString -> ByteString
encodeByteStringWith Char -> Bool
predicate = String -> ByteString
U.pack (String -> ByteString)
-> (ByteString -> String) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> String -> String
encodeWith Char -> Bool
predicate (String -> String)
-> (ByteString -> String) -> ByteString -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> String
U.unpack
decodeByteString :: U.ByteString -> U.ByteString
decodeByteString :: ByteString -> ByteString
decodeByteString = String -> ByteString
U.fromString (String -> ByteString)
-> (ByteString -> String) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
decode (String -> String)
-> (ByteString -> String) -> ByteString -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> String
U.unpack
isAllowed :: Char -> Bool
isAllowed :: Char -> Bool
isAllowed = Char -> Bool
isUnreserved
fixUtf8 :: String -> String
#ifdef MIN_VERSION_network
#if MIN_VERSION_network(2,4,0)
fixUtf8 = id
#else
fixUtf8 = U.unpack . U.fromString
#endif
#else
fixUtf8 :: String -> String
fixUtf8 = String -> String
forall a. a -> a
id
#endif
unfixUtf8 :: String -> String
#ifdef MIN_VERSION_network
#if MIN_VERSION_network(2,4,1)
unfixUtf8 = id
#else
unfixUtf8 = U.toString . U.pack
#endif
#else
unfixUtf8 :: String -> String
unfixUtf8 = String -> String
forall a. a -> a
id
#endif