strelka-0.4: library/Strelka/Executor.hs
module Strelka.Executor where
import Strelka.Prelude
import Strelka.Model
import qualified Strelka.RequestParser as A
import qualified Strelka.ResponseBuilder as B
import qualified Data.Text as C
import qualified Data.Text.Encoding as D
import qualified Data.Text.Encoding.Error as E
route :: Monad m => Request -> A.RequestParser m B.ResponseBuilder -> m (Either Text Response)
route request route =
(liftM . liftM) (B.run . fst) (A.run route request segments)
where
segments =
case request of
Request _ (Path pathBytes) _ _ _ ->
filter (not . C.null) (C.splitOn "/" (D.decodeUtf8With E.lenientDecode pathBytes))