git.iko.soy/typeable/http-api-data
on master help sign in
Add To/FromHttpApiData instances for some basic types
7dd2e4aNickolay Kudasov
Web/HttpApiData.hs+38
@@ -1,4 +1,5 @@
1{-# LANGUAGE DefaultSignatures #-}
1{-# LANGUAGE DefaultSignatures #-}
2+{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE OverloadedStrings #-}
3{-# LANGUAGE OverloadedStrings #-}
3module Web.HttpApiData (
4module Web.HttpApiData (
4 ToHttpApiData (..),
5 ToHttpApiData (..),
@@ -12,6 +13,9 @@ module Web.HttpApiData (
12import Data.Monoid
13import Data.Monoid
13import Data.ByteString (ByteString)
14import Data.ByteString (ByteString)
14
15
16+import Data.Int
17+import Data.Word
18+
15import Data.Text (Text)
19import Data.Text (Text)
16import Data.Text.Encoding (encodeUtf8, decodeUtf8)
20import Data.Text.Encoding (encodeUtf8, decodeUtf8)
17import qualified Data.Text as Text
21import qualified Data.Text as Text
@@ -65,3 +69,37 @@ readMaybeUrlPiece = readMaybe . Text.unpack
65readEitherUrlPiece :: Read a => Text -> Either Text a
69readEitherUrlPiece :: Read a => Text -> Either Text a
66readEitherUrlPiece = parseMaybeUrlPiece readMaybeUrlPiece
70readEitherUrlPiece = parseMaybeUrlPiece readMaybeUrlPiece
67
71
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+