git.iko.soy/typeable/http-api-data
on master help sign in
Add to/fromUrlPieces helpers
63eb450Nickolay Kudasov
Web/HttpApiData.hs+4
@@ -19,6 +19,10 @@ module Web.HttpApiData (
19 parseHeaderWithPrefix,
19 parseHeaderWithPrefix,
20 parseQueryParamWithPrefix,
20 parseQueryParamWithPrefix,
21
21
22+ -- * Multiple URL pieces
23+ toUrlPieces,
24+ parseUrlPieces,
25+
22 -- * Other helpers
26 -- * Other helpers
23 showTextData,
27 showTextData,
24 readTextData,
28 readTextData,
Web/HttpApiData/Internal.hs+16
@@ -71,6 +71,22 @@ class FromHttpApiData a where
71 parseQueryParam :: Text -> Either Text a
71 parseQueryParam :: Text -> Either Text a
72 parseQueryParam = parseUrlPiece
72 parseQueryParam = parseUrlPiece
73
73
74+-- | Convert multiple values to a list of URL pieces.
75+--
76+-- >>> toUrlPieces [1, 2, 3]
77+-- ["1","2","3"]
78+toUrlPieces :: (Functor t, ToHttpApiData a) => t a -> t Text
79+toUrlPieces = fmap toUrlPiece
80+
81+-- | Parse multiple URL pieces.
82+--
83+-- >>> parseUrlPieces ["true", "false"] :: Either Text [Bool]
84+-- Right [True,False]
85+-- >>> parseUrlPieces ["123", "hello", "world"] :: Either Text [Int]
86+-- Left "input does not start with a digit"
87+parseUrlPieces :: (Traversable t, FromHttpApiData a) => t Text -> Either Text (t a)
88+parseUrlPieces = traverse parseUrlPiece
89+
74-- | Parse URL path piece in a @'Maybe'@.
90-- | Parse URL path piece in a @'Maybe'@.
75--
91--
76-- >>> parseUrlPieceMaybe "12" :: Maybe Int
92-- >>> parseUrlPieceMaybe "12" :: Maybe Int