wai-digestive-functors 0.2 → 0.3
raw patch · 2 files changed
+33/−2 lines, 2 filesdep +transformers
Dependencies added: transformers
Files
- Network/Wai/Digestive.hs +31/−1
- wai-digestive-functors.cabal +2/−1
Network/Wai/Digestive.hs view
@@ -1,11 +1,17 @@+{-# LANGUAGE CPP #-} -- | Helpers to bind 'digestive-functors' onto a 'wai' request module Network.Wai.Digestive (queryFormEnv, bodyFormEnv, bodyFormEnv_, requestFormEnv, requestFormEnv_) where import Control.Arrow (second)+#if MIN_VERSION_wai(2,0,0)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Control.Monad.Trans.Resource (ResourceT, getInternalState)+#else+import Control.Monad.Trans.Resource (ResourceT)+#endif import Text.Digestive (Env, FormInput(..)) import Network.HTTP.Types.QueryLike (QueryLike, toQuery, toQueryValue) import Network.Wai (Request, queryString)-import Control.Monad.Trans.Resource (ResourceT) import Network.Wai.Util (queryLookupAll) import Network.Wai.Parse (parseRequestBody, BackEnd, File, fileContent, tempFileBackEnd) import Data.Text (Text)@@ -26,28 +32,52 @@ qs' = toQuery qs -- | Build an 'Text.Digestive.Types.Env' from a request body+#if MIN_VERSION_wai(2,0,0)+bodyFormEnv :: (Monad m, MonadIO io) => BackEnd FilePath -> Request -> io (Env m)+bodyFormEnv backend req = liftIO $ do+#else bodyFormEnv :: (Monad m) => BackEnd FilePath -> Request -> ResourceT IO (Env m) bodyFormEnv backend req = do+#endif (query, files) <- parseRequestBody backend req return $ queryFormEnv (toQuery query ++ toQuery (FileQuery files)) -- | Build an 'Text.Digestive.Types.Env' from a request body -- -- Uses a default temporary file 'Network.Wai.Parse.BackEnd'+#if MIN_VERSION_wai(2,0,0)+bodyFormEnv_ :: (Monad m, MonadIO io) => Request -> ResourceT io (Env m)+bodyFormEnv_ req = do+ st <- getInternalState+ bodyFormEnv (tempFileBackEnd st) req+#else bodyFormEnv_ :: (Monad m) => Request -> ResourceT IO (Env m) bodyFormEnv_ = bodyFormEnv tempFileBackEnd+#endif -- | Build an 'Text.Digestive.Types.Env' from request body and query string+#if MIN_VERSION_wai(2,0,0)+requestFormEnv :: (Monad m, MonadIO io) => BackEnd FilePath -> Request -> io (Env m)+requestFormEnv backend req = liftIO $ do+#else requestFormEnv :: (Monad m) => BackEnd FilePath -> Request -> ResourceT IO (Env m) requestFormEnv backend req = do+#endif (query, files) <- parseRequestBody backend req return $ queryFormEnv (toQuery query ++ toQuery (FileQuery files) ++ queryString req) -- | Build an 'Text.Digestive.Types.Env' from request body and query string -- -- Uses a default temporary file 'Network.Wai.Parse.BackEnd'+#if MIN_VERSION_wai(2,0,0)+requestFormEnv_ :: (Monad m, MonadIO io) => Request -> ResourceT io (Env m)+requestFormEnv_ req = do+ st <- getInternalState+ requestFormEnv (tempFileBackEnd st) req+#else requestFormEnv_ :: (Monad m) => Request -> ResourceT IO (Env m) requestFormEnv_ = requestFormEnv tempFileBackEnd+#endif -- | Format form paths just like PHP/Rails pathToText :: [Text] -> Text
wai-digestive-functors.cabal view
@@ -1,5 +1,5 @@ name: wai-digestive-functors-version: 0.2+version: 0.3 cabal-version: >= 1.8 license: OtherLicense license-file: COPYING@@ -30,6 +30,7 @@ wai-extra, wai-util >= 0.6, resourcet,+ transformers, text, http-types, digestive-functors