@@ -1,4 +1,5 @@
11{-# LANGUAGE DefaultSignatures #-}
2+{-# LANGUAGE FlexibleInstances #-}
23{-# LANGUAGE OverloadedStrings #-}
34module Web.HttpApiData (
45 ToHttpApiData (..),
@@ -12,6 +13,9 @@ module Web.HttpApiData (
1213import Data.Monoid
1314import Data.ByteString (ByteString)
1415
16+import Data.Int
17+import Data.Word
18+
1519import Data.Text (Text)
1620import Data.Text.Encoding (encodeUtf8, decodeUtf8)
1721import qualified Data.Text as Text
@@ -65,3 +69,37 @@ readMaybeUrlPiece = readMaybe . Text.unpack
6569readEitherUrlPiece :: Read a => Text -> Either Text a
6670readEitherUrlPiece = parseMaybeUrlPiece readMaybeUrlPiece
6771
72+instance ToHttpApiData Bool where toUrlPiece = showUrlPiece
73+instance ToHttpApiData Double where toUrlPiece = showUrlPiece
74+instance ToHttpApiData Float where toUrlPiece = showUrlPiece
75+instance ToHttpApiData Int where toUrlPiece = showUrlPiece
76+instance ToHttpApiData Int8 where toUrlPiece = showUrlPiece
77+instance ToHttpApiData Int16 where toUrlPiece = showUrlPiece
78+instance ToHttpApiData Int32 where toUrlPiece = showUrlPiece
79+instance ToHttpApiData Int64 where toUrlPiece = showUrlPiece
80+instance ToHttpApiData Integer where toUrlPiece = showUrlPiece
81+instance ToHttpApiData Word where toUrlPiece = showUrlPiece
82+instance ToHttpApiData Word8 where toUrlPiece = showUrlPiece
83+instance ToHttpApiData Word16 where toUrlPiece = showUrlPiece
84+instance ToHttpApiData Word32 where toUrlPiece = showUrlPiece
85+instance ToHttpApiData Word64 where toUrlPiece = showUrlPiece
86+instance ToHttpApiData [Char] where toUrlPiece = Text.pack
87+instance ToHttpApiData Text where toUrlPiece = id
88+
89+instance FromHttpApiData Bool where parseUrlPiece = readEitherUrlPiece
90+instance FromHttpApiData Double where parseUrlPiece = readEitherUrlPiece
91+instance FromHttpApiData Float where parseUrlPiece = readEitherUrlPiece
92+instance FromHttpApiData Int where parseUrlPiece = readEitherUrlPiece
93+instance FromHttpApiData Int8 where parseUrlPiece = readEitherUrlPiece
94+instance FromHttpApiData Int16 where parseUrlPiece = readEitherUrlPiece
95+instance FromHttpApiData Int32 where parseUrlPiece = readEitherUrlPiece
96+instance FromHttpApiData Int64 where parseUrlPiece = readEitherUrlPiece
97+instance FromHttpApiData Integer where parseUrlPiece = readEitherUrlPiece
98+instance FromHttpApiData Word where parseUrlPiece = readEitherUrlPiece
99+instance FromHttpApiData Word8 where parseUrlPiece = readEitherUrlPiece
100+instance FromHttpApiData Word16 where parseUrlPiece = readEitherUrlPiece
101+instance FromHttpApiData Word32 where parseUrlPiece = readEitherUrlPiece
102+instance FromHttpApiData Word64 where parseUrlPiece = readEitherUrlPiece
103+instance FromHttpApiData [Char] where parseUrlPiece = Right . Text.unpack
104+instance FromHttpApiData Text where parseUrlPiece = Right
105+