git.iko.soy/typeable/http-api-data
on master help sign in
Add To/FromHttpApiData instances for Day
commite8e821ffeaa3f8a9c6ec629c8f0dc0c80cce0ed1 authorNickolay Kudasov <nickolay.kudasov@gmail.com> dateSun 4 Oct 2015, 02:17 (11 years ago) parent3fc4ba5
2 files changed+5−8
Web/HttpApiData.hs+4−1 Web/PathPieces.hs+1−7
Web/HttpApiData.hs+4−1
@@ -24,6 +24,8 @@ import Data.Text.Read (signed, decimal, rational, Reader)
2424import qualified Data.Text as Text
2525import qualified Data.Text.Lazy as TL
2626
27+import Data.Time (Day)
28+
2729import Text.Read (readMaybe)
2830
2931-- | Convert value to HTTP API data.
@@ -94,6 +96,7 @@ instance ToHttpApiData Word64 where toUrlPiece = showUrlPiece
9496instance ToHttpApiData [Char] where toUrlPiece = Text.pack
9597instance ToHttpApiData Text where toUrlPiece = id
9698instance ToHttpApiData TL.Text where toUrlPiece = TL.toStrict
99+instance ToHttpApiData Day where toUrlPiece = showUrlPiece
97100
98101instance FromHttpApiData Bool where parseUrlPiece = readEitherUrlPiece
99102instance FromHttpApiData Double where parseUrlPiece = runReader rational
@@ -112,4 +115,4 @@ instance FromHttpApiData Word64 where parseUrlPiece = runReader decimal
112115instance FromHttpApiData [Char] where parseUrlPiece = Right . Text.unpack
113116instance FromHttpApiData Text where parseUrlPiece = Right
114117instance FromHttpApiData TL.Text where parseUrlPiece = Right . TL.fromStrict
115−
118+instance FromHttpApiData Day where parseUrlPiece = readEitherUrlPiece
Web/PathPieces.hs+1−7
@@ -40,18 +40,12 @@ instance PathPiece Word64
4040instance PathPiece String
4141instance PathPiece S.Text
4242instance PathPiece L.Text
43+instance PathPiece Day
4344
4445instance PathPiece () where
4546 fromPathPiece t = if t == "_" then Just () else Nothing
4647 toPathPiece () = "_"
4748
48−instance PathPiece Day where
49− fromPathPiece t =
50− case reads $ S.unpack t of
51− [(a,"")] -> Just a
52− _ -> Nothing
53− toPathPiece = S.pack . show
54−
5549instance (PathPiece a) => PathPiece (Maybe a) where
5650 fromPathPiece s = case S.stripPrefix "Just " s of
5751 Just r -> Just `fmap` fromPathPiece r