@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DefaultSignatures #-}
23{-# LANGUAGE FlexibleInstances #-}
34{-# LANGUAGE OverloadedStrings #-}
@@ -38,6 +39,10 @@ import qualified Data.Text.Lazy as L
3839import Data.Time (Day)
3940import Data.Version
4041
42+#if MIN_VERSION_base(4,8,0)
43+import Data.Void
44+#endif
45+
4146import Text.Read (readMaybe)
4247import Text.ParserCombinators.ReadP (readP_to_S)
4348
@@ -134,6 +139,11 @@ instance ToHttpApiData Char where toUrlPiece = T.singleton
134139instance ToHttpApiData Version where
135140 toUrlPiece = T.pack . showVersion
136141
142+#if MIN_VERSION_base(4,8,0)
143+instance ToHttpApiData Void where
144+ toUrlPiece = absurd
145+#endif
146+
137147instance ToHttpApiData Bool where toUrlPiece = showUrlPiece
138148instance ToHttpApiData Double where toUrlPiece = showUrlPiece
139149instance ToHttpApiData Float where toUrlPiece = showUrlPiece
@@ -201,6 +211,11 @@ instance FromHttpApiData Text where parseUrlPiece = Right
201211instance FromHttpApiData L.Text where parseUrlPiece = Right . L.fromStrict
202212instance FromHttpApiData Day where parseUrlPiece = readEitherUrlPiece
203213
214+#if MIN_VERSION_base(4,8,0)
215+instance FromHttpApiData Void where
216+ parseUrlPiece _ = Left "Void cannot be parsed!"
217+#endif
218+
204219-- |
205220-- >>> parseUrlPiece "Just 123" :: Either Text (Maybe Int)
206221-- Right (Just 123)