on master help sign in
Adding documentation
6d91123Lyndon Maydwell
wai-extra/Network/Wai/Middleware/MethodOverridePost.hs+15−2
@@ -1,14 +1,27 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2
2
3+-----------------------------------------------------------------
4+-- |
5+-- Module : Network.Wai.Middleware.MethodOverridePost
6+--
7+-- Changing of request-method via first post-parameter "_method".
8+--
9+-----------------------------------------------------------------
3−module Network.Wai.Middleware.MethodOverridePost ( methodOverridePost) where
10+module Network.Wai.Middleware.MethodOverridePost
11+ ( methodOverridePost
12+ ) where
4
13
5import Network.Wai
14import Network.Wai
15+import Network.HTTP.Types (parseQuery)
6import Data.Monoid (mconcat)
16import Data.Monoid (mconcat)
7import Data.Conduit.Lazy (lazyConsume)
17import Data.Conduit.Lazy (lazyConsume)
8−import Network.HTTP.Types (parseQuery)
9import Control.Monad.Trans.Resource (ResourceT)
18import Control.Monad.Trans.Resource (ResourceT)
10import Data.Conduit.List (sourceList)
19import Data.Conduit.List (sourceList)
11
20
21+-- | Override the request-method by setting the first POST key/value
22+-- to "_method" / <request-method>.
23+--
24+-- * Only accepts "application/x-www-form-urlencoded" POSTs.
12methodOverridePost :: Middleware
25methodOverridePost :: Middleware
13methodOverridePost app req = case lookup "Content-Type" (requestHeaders req) of
26methodOverridePost app req = case lookup "Content-Type" (requestHeaders req) of
14 Just "application/x-www-form-urlencoded" -> setPost req >>= app
27 Just "application/x-www-form-urlencoded" -> setPost req >>= app