diff --git a/Yesod/Dispatch.hs b/Yesod/Dispatch.hs index 47cdf534..c5048a4c 100644 --- a/Yesod/Dispatch.hs +++ b/Yesod/Dispatch.hs @@ -27,9 +27,7 @@ import Language.Haskell.TH.Syntax import qualified Network.Wai as W import qualified Network.Wai.Enumerator as W import Network.Wai.Middleware.CleanPath -import Network.Wai.Middleware.ClientSession import Network.Wai.Middleware.Jsonp -import Network.Wai.Middleware.MethodOverride import Network.Wai.Middleware.Gzip import qualified Network.Wai.Handler.SimpleServer as SS @@ -38,8 +36,7 @@ import System.Environment (getEnvironment) import qualified Data.ByteString.Char8 as B import Web.Encodings -import Data.List (intercalate) -import Web.Routes (encodePathInfo, decodePathInfo) +import Web.Routes (encodePathInfo) import Control.Concurrent.MVar import Control.Arrow ((***)) @@ -129,7 +126,6 @@ toWaiApp :: (Yesod y, YesodSite y) => y -> IO W.Application toWaiApp a = return $ gzip $ jsonp - $ methodOverride $ cleanPath $ toWaiApp' a @@ -140,10 +136,10 @@ parseSession bs = case reads $ cs bs of toWaiApp' :: (Yesod y, YesodSite y) => y - -> [B.ByteString] + -> [String] -> W.Request -> IO W.Response -toWaiApp' y resource env = do +toWaiApp' y segments env = do key' <- encryptKey y now <- getCurrentTime let getExpires m = fromIntegral (m * 60) `addUTCTime` now @@ -158,7 +154,7 @@ toWaiApp' y resource env = do site = getSite method = B.unpack $ W.methodToBS $ W.requestMethod env types = httpAccept env - pathSegments = filter (not . null) $ cleanupSegments resource + pathSegments = filter (not . null) segments eurl = quasiParse site pathSegments render u = fromMaybe (fullRender (approot y) site u) @@ -206,9 +202,6 @@ fullRender :: String -- ^ approot, no trailing slash fullRender ar site route = ar ++ '/' : encodePathInfo (fixSegs $ quasiRender site route) -cleanupSegments :: [B.ByteString] -> [String] -cleanupSegments = decodePathInfo . intercalate "/" . map B.unpack - httpAccept :: W.Request -> [ContentType] httpAccept = map (contentTypeFromString . B.unpack) . parseHttpAccept diff --git a/Yesod/Form.hs b/Yesod/Form.hs index 4e00384a..9c3922b6 100644 --- a/Yesod/Form.hs +++ b/Yesod/Form.hs @@ -25,7 +25,6 @@ import Yesod.Handler import Control.Applicative hiding (optional) import Data.Time (Day) import Data.Convertible.Text -import Control.Monad.Attempt import Data.Maybe (fromMaybe) #if MIN_VERSION_transformers(0,2,0) import "transformers" Control.Monad.IO.Class @@ -33,6 +32,7 @@ import "transformers" Control.Monad.IO.Class import "transformers" Control.Monad.Trans #endif import Yesod.Internal +import Control.Monad.Attempt noParamNameError :: String noParamNameError = "No param name (miscalling of Yesod.Form library)" @@ -56,7 +56,7 @@ instance Applicative Form where type FormError = String -runFormGeneric :: MonadFailure ErrorResponse m +runFormGeneric :: Failure ErrorResponse m => (ParamName -> [ParamValue]) -> Form x -> m x runFormGeneric params (Form f) = case f params of @@ -64,7 +64,7 @@ runFormGeneric params (Form f) = Right (_, x) -> return x -- | Run a form against POST parameters. -runFormPost :: (RequestReader m, MonadFailure ErrorResponse m, MonadIO m) +runFormPost :: (RequestReader m, Failure ErrorResponse m, MonadIO m) => Form x -> m x runFormPost f = do rr <- getRequest @@ -72,7 +72,7 @@ runFormPost f = do runFormGeneric pp f -- | Run a form against GET parameters. -runFormGet :: (RequestReader m, MonadFailure ErrorResponse m) +runFormGet :: (RequestReader m, Failure ErrorResponse m) => Form x -> m x runFormGet f = do rr <- getRequest diff --git a/Yesod/Handler.hs b/Yesod/Handler.hs index 85485d88..f0119373 100644 --- a/Yesod/Handler.hs +++ b/Yesod/Handler.hs @@ -83,12 +83,12 @@ import "transformers" Control.Monad.Trans #endif import qualified Control.Monad.CatchIO as C import Control.Monad.CatchIO (catch) -import Control.Monad.Attempt import Control.Monad (liftM, ap) import System.IO import qualified Data.ByteString.Lazy as BL import qualified Network.Wai as W +import Control.Monad.Attempt import Data.Convertible.Text (cs) import Text.Hamlet diff --git a/Yesod/Helpers/Auth.hs b/Yesod/Helpers/Auth.hs index ef11a6ba..c9846f2d 100644 --- a/Yesod/Helpers/Auth.hs +++ b/Yesod/Helpers/Auth.hs @@ -40,7 +40,6 @@ import qualified Web.Authenticate.OpenId as OpenId import Yesod -import Control.Monad.Attempt import Data.Maybe import Control.Monad import System.Random @@ -48,6 +47,7 @@ import Data.Digest.Pure.MD5 import Control.Applicative import Control.Concurrent.MVar import System.IO +import Control.Monad.Attempt class Yesod master => YesodAuth master where -- | Default destination on successful login or logout, if no other diff --git a/Yesod/Yesod.hs b/Yesod/Yesod.hs index 7bb1d9c2..f971b09c 100644 --- a/Yesod/Yesod.hs +++ b/Yesod/Yesod.hs @@ -17,10 +17,10 @@ import Yesod.Request import Yesod.Hamlet import Yesod.Handler import Data.Convertible.Text -import Network.Wai.Middleware.ClientSession import qualified Network.Wai as W import Yesod.Json import Yesod.Internal +import Web.ClientSession (Word256, getKey, defaultKeyFile) import Web.Routes.Quasi (QuasiSite (..), Routes) diff --git a/yesod.cabal b/yesod.cabal index 9028f762..f2b9ccf3 100644 --- a/yesod.cabal +++ b/yesod.cabal @@ -33,23 +33,23 @@ library build-depends: base >= 4 && < 5, time >= 1.1.3 && < 1.2, wai >= 0.0.1 && < 0.3, - wai-extra >= 0.0.0 && < 0.1, - authenticate >= 0.6 && < 0.7, + wai-extra >= 0.1.0 && < 0.2, + authenticate >= 0.6.2 && < 0.7, bytestring >= 0.9.1.4 && < 0.10, - web-encodings >= 0.2.4 && < 0.3, + web-encodings >= 0.2.6 && < 0.3, directory >= 1 && < 1.1, - control-monad-attempt >= 0.2.0 && < 0.3, text >= 0.5 && < 0.8, - convertible-text >= 0.2.0 && < 0.3, + convertible-text >= 0.3.0 && < 0.4, template-haskell >= 2.4 && < 2.5, web-routes >= 0.22 && < 0.23, web-routes-quasi >= 0.2 && < 0.3, hamlet >= 0.2.2 && < 0.3, transformers >= 0.1 && < 0.3, - clientsession >= 0.2 && < 0.3, + clientsession >= 0.2.1 && < 0.3, MonadCatchIO-transformers >= 0.2.2 && < 0.3, pureMD5 >= 1.0.0.3 && < 1.1, - random >= 1.0.0.2 && < 1.1 + random >= 1.0.0.2 && < 1.1, + control-monad-attempt >= 0.3 && < 0.4 exposed-modules: Yesod Yesod.Content Yesod.Dispatch