wai-routing-0.4: src/Network/Wai/Routing/Request.hs
-- This Source Code Form is subject to the terms of the Mozilla Public
-- License, v. 2.0. If a copy of the MPL was not distributed with this
-- file, You can obtain one at http://mozilla.org/MPL/2.0/.
module Network.Wai.Routing.Request
( RoutingReq
, HasCaptures (..)
, fromReq
, lookupCapture
) where
import Data.ByteString (ByteString)
import Network.Wai.Predicate.Request
class HasCaptures a where
captures :: a -> [(ByteString, ByteString)]
data RoutingReq = RoutingReq
{ _captures :: [(ByteString, ByteString)]
, _request :: Req
}
instance HasRequest RoutingReq where
getRequest = getRequest . _request
instance HasMethod RoutingReq where
method = method . _request
instance HasHeaders RoutingReq where
headers = headers . _request
instance HasCookies RoutingReq where
cookies = cookies . _request
instance HasQuery RoutingReq where
queryItems = queryItems . _request
instance HasPath RoutingReq where
segments = segments . _request
instance HasCaptures RoutingReq where
captures = _captures
fromReq :: [(ByteString, ByteString)] -> Req -> RoutingReq
fromReq = RoutingReq
lookupCapture :: (HasCaptures r) => ByteString -> r -> [ByteString]
lookupCapture name = map snd . filter ((name ==) . fst) . captures