packages feed

happstack-server 7.4.2 → 7.4.3

raw patch · 8 files changed

+55/−31 lines, 8 filesdep ~timePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: time

API changes (from Hackage documentation)

- Happstack.Server.Internal.Monads: instance [overlap ok] Monad m => MonadPlus (ServerPartT m)
- Happstack.Server.Internal.Monads: instance [overlap ok] Monad m => MonadPlus (WebT m)
- Happstack.Server.Internal.Monads: instance [overlap ok] Monad m => Monoid (ServerPartT m a)
- Happstack.Server.Internal.Monads: instance [overlap ok] Monad m => Monoid (WebT m a)
- Happstack.Server.RqData: instance [overlap ok] Error e => MonadReader r (ReaderError r e)
- Happstack.Server.RqData: instance [overlap ok] MonadIO m => HasRqData (ServerPartT m)
+ Happstack.Server.Internal.Monads: instance [overlap ok] (Monad m, MonadPlus m) => MonadPlus (WebT m)
+ Happstack.Server.Internal.Monads: instance [overlap ok] (Monad m, MonadPlus m) => Monoid (ServerPartT m a)
+ Happstack.Server.Internal.Monads: instance [overlap ok] (Monad m, MonadPlus m) => Monoid (WebT m a)
+ Happstack.Server.Internal.Monads: instance [overlap ok] MonadPlus m => MonadPlus (ServerPartT m)
+ Happstack.Server.RqData: instance [overlap ok] (Error e, Monoid e) => MonadReader r (ReaderError r e)
+ Happstack.Server.RqData: instance [overlap ok] (MonadIO m, MonadPlus m) => HasRqData (ServerPartT m)
- Happstack.Server.Internal.Monads: multi :: Monad m => [ServerPartT m a] -> ServerPartT m a
+ Happstack.Server.Internal.Monads: multi :: (Monad m, MonadPlus m) => [ServerPartT m a] -> ServerPartT m a

Files

happstack-server.cabal view
@@ -1,5 +1,5 @@ Name:                happstack-server-Version:             7.4.2+Version:             7.4.3 Synopsis:            Web related tools and services. Description:         Happstack Server provides an HTTP server and a rich set of functions for routing requests, handling query parameters, generating responses, working with cookies, serving files, and more. For in-depth documentation see the Happstack Crash Course <http://happstack.com/docs/crashcourse/index.html> License:             BSD3
src/Happstack/Server/FileServe/BuildingBlocks.hs view
@@ -65,7 +65,6 @@ import Data.Maybe                   (fromMaybe) import           Data.Map           (Map) import qualified Data.Map           as Map-import Data.Time                    (UTCTime, formatTime) import Data.Time.Compat             (toUTCTime) import Filesystem.Path.CurrentOS    (commonPrefix, encodeString, decodeString, collapse, append) import Happstack.Server.Monads      (ServerMonad(askRq), FilterMonad, WebMonad)@@ -74,11 +73,17 @@ import System.Directory             (doesDirectoryExist, doesFileExist, getDirectoryContents, getModificationTime) import System.FilePath              ((</>), addTrailingPathSeparator, hasDrive, isPathSeparator, joinPath, takeExtension, isValid) import System.IO                    (IOMode(ReadMode), hFileSize, hClose, openBinaryFile, withBinaryFile)-import System.Locale                (defaultTimeLocale) import System.Log.Logger            (Priority(DEBUG), logM) import           Text.Blaze.Html             ((!)) import qualified Text.Blaze.Html5            as H import qualified Text.Blaze.Html5.Attributes as A++#if MIN_VERSION_time(1,5,0)+import Data.Time     (UTCTime, formatTime, defaultTimeLocale)+#else+import System.Locale (defaultTimeLocale)+import Data.Time     (UTCTime, formatTime)+#endif  -- * Mime-Type / Content-Type 
src/Happstack/Server/Internal/Clock.hs view
@@ -12,9 +12,14 @@ import Data.IORef import Data.Time.Clock       (UTCTime) import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime, posixSecondsToUTCTime)-import Data.Time.Format      (formatTime) import System.IO.Unsafe-import System.Locale++#if MIN_VERSION_time(1,5,0)+import Data.Time.Format (formatTime, defaultTimeLocale)+#else+import Data.Time.Format (formatTime)+import System.Locale    (defaultTimeLocale)+#endif  import qualified Data.ByteString.Char8 as B 
src/Happstack/Server/Internal/Cookie.hs view
@@ -23,10 +23,15 @@ import Data.List             ((\\), intersperse) import Data.Time.Clock       (UTCTime, addUTCTime, diffUTCTime) import Data.Time.Clock.POSIX (posixSecondsToUTCTime)-import Data.Time.Format      (formatTime) import Happstack.Server.Internal.Clock (getApproximateUTCTime) import Text.ParserCombinators.Parsec hiding (token)-import System.Locale         (defaultTimeLocale)++#if MIN_VERSION_time(1,5,0)+import Data.Time.Format (formatTime, defaultTimeLocale)+#else+import Data.Time.Format (formatTime)+import System.Locale    (defaultTimeLocale)+#endif  -- | a type for HTTP cookies. Usually created using 'mkCookie'. data Cookie = Cookie
src/Happstack/Server/Internal/LogFormat.hs view
@@ -3,8 +3,12 @@   , formatRequestCombined   ) where -import System.Locale (defaultTimeLocale)+#if MIN_VERSION_time(1,5,0)+import Data.Time.Format (FormatTime(..), formatTime, defaultTimeLocale)+#else import Data.Time.Format (FormatTime(..), formatTime)+import System.Locale    (defaultTimeLocale)+#endif  -- | Format the time as describe in the Apache combined log format. --   http://httpd.apache.org/docs/2.2/logs.html#combined
src/Happstack/Server/Internal/Monads.hs view
@@ -173,7 +173,7 @@ instance MonadTrans (ServerPartT) where     lift m = withRequest (\_ -> lift m) -instance (Monad m) => Monoid (ServerPartT m a) where+instance (Monad m, MonadPlus m) => Monoid (ServerPartT m a) where     mempty  = mzero     mappend = mplus @@ -486,7 +486,7 @@ instance MonadTrans WebT where     lift = WebT . lift . lift . lift -instance (Monad m) => MonadPlus (WebT m) where+instance (Monad m, MonadPlus m) => MonadPlus (WebT m) where     -- | Aborts a computation.     --     -- This is primarily useful because 'msum' will take an array of@@ -505,7 +505,7 @@           lft (Left  r, _) = Left r           lft (Right a, f) = Right (a, f) -instance (Monad m) => Monoid (WebT m a) where+instance (Monad m, MonadPlus m) => Monoid (WebT m a) where     mempty = mzero     mappend = mplus @@ -561,7 +561,7 @@               liftWebT (Just (Right x,f)) = pass (return x)>>= (\a -> return $ Just (Right a,f))  -- | Deprecated: use 'msum'.-multi :: Monad m => [ServerPartT m a] -> ServerPartT m a+multi :: (Monad m, MonadPlus m) => [ServerPartT m a] -> ServerPartT m a multi = msum {-# DEPRECATED multi "Use msum instead" #-} 
src/Happstack/Server/Response.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE FlexibleContexts, FlexibleInstances, TypeSynonymInstances, ScopedTypeVariables #-} -- | Functions and classes related to generating a 'Response' and setting the response code. For detailed instruction see the Happstack Crash Course: <http://happstack.com/docs/crashcourse/HelloWorld.html#response_code>-module Happstack.Server.Response +module Happstack.Server.Response     ( -- * Converting values to a 'Response'       ToMessage(..)     , flatten@@ -34,24 +34,29 @@ import qualified Data.Text.Encoding              as T import qualified Data.Text.Lazy                  as LT import qualified Data.Text.Lazy.Encoding         as LT-import           Data.Time                       (UTCTime, formatTime) import           Happstack.Server.Internal.Monads         (FilterMonad(composeFilter)) import           Happstack.Server.Types          (Response(..), Request(..), nullRsFlags, getHeader, noContentLength, redirect, result, setHeader, setHeaderBS) import           Happstack.Server.SURI           (ToSURI)-import           System.Locale                   (defaultTimeLocale) import qualified Text.Blaze.Html                 as Blaze import qualified Text.Blaze.Html.Renderer.Utf8   as Blaze import           Text.Html                       (Html, renderHtml) import qualified Text.XHtml                      as XHtml (Html, renderHtml) +#if MIN_VERSION_time(1,5,0)+import Data.Time     (UTCTime, formatTime, defaultTimeLocale)+#else+import Data.Time     (UTCTime, formatTime)+import System.Locale (defaultTimeLocale)+#endif+ -- | A low-level function to build a 'Response' from a content-type -- and a 'ByteString'. -- -- Creates a 'Response' in a manner similar to the 'ToMessage' class, -- but without requiring an instance declaration.--- +-- -- example:--- +-- -- > import Data.ByteString.Char8 as C -- > import Data.ByteString.Lazy.Char8 as L -- > import Happstack.Server@@ -85,7 +90,7 @@ -- -- > main = serve Nothing $ toResponse "hello, world!" ----- Minimal definition: 'toMessage' (and usually 'toContentType'). +-- Minimal definition: 'toMessage' (and usually 'toContentType'). class ToMessage a where     toContentType :: a -> B.ByteString     toContentType _ = B.pack "text/plain"@@ -194,31 +199,31 @@ -- -- A filter for setting the response code. Generally you will use a -- helper function like 'ok' or 'seeOther'.--- +-- -- > main = simpleHTTP nullConf $ do setResponseCode 200 -- >                                 return "Everything is OK"--- +-- -- see also: 'resp'-setResponseCode :: FilterMonad Response m => +setResponseCode :: FilterMonad Response m =>                    Int -- ^ response code                 -> m () setResponseCode code     = composeFilter $ \r -> r{rsCode = code}  -- | Same as @'setResponseCode' status >> return val@.--- +-- -- Use this if you want to set a response code that does not already--- have a helper function. --- +-- have a helper function.+-- -- > main = simpleHTTP nullConf $ resp 200 "Everything is OK"-resp :: (FilterMonad Response m) => +resp :: (FilterMonad Response m) =>         Int -- ^ response code      -> b   -- ^ value to return      -> m b resp status val = setResponseCode status >> return val  -- | Respond with @200 OK@.--- +-- -- > main = simpleHTTP nullConf $ ok "Everything is OK" ok :: (FilterMonad Response m) => a -> m a ok = resp 200@@ -239,7 +244,7 @@                               return res  -- | Respond with @302 Found@.--- +-- -- You probably want 'seeOther'. This method is not in popular use anymore, and is generally treated like 303 by most user-agents anyway. found :: (FilterMonad Response m, ToSURI uri) => uri -> res -> m res found uri res = do modifyResponse $ redirect 302 uri@@ -284,7 +289,7 @@ forbidden = resp 403  -- | Respond with @404 Not Found@.--- +-- -- > main = simpleHTTP nullConf $ notFound "What you are looking for has not been found." notFound :: (FilterMonad Response m) => a -> m a notFound = resp 404@@ -324,4 +329,4 @@     showString "\nrsValidator = " . shows      (rsValidator res).     showString "\nsfFilePath  = " . shows      (sfFilePath res) .     showString "\nsfOffset    = " . shows      (sfOffset res)   .-    showString "\nsfCount     = " $ show       (sfCount res)    +    showString "\nsfCount     = " $ show       (sfCount res)
src/Happstack/Server/RqData.hs view
@@ -92,7 +92,7 @@ newtype ReaderError r e a = ReaderError { unReaderError :: ReaderT r (Either e) a }     deriving (Functor, Monad, MonadPlus) -instance (Error e) => MonadReader r (ReaderError r e) where+instance (Error e, Monoid e) => MonadReader r (ReaderError r e) where     ask = ReaderError ask     local f m = ReaderError $ local f (unReaderError m) @@ -157,7 +157,7 @@     rqDataError e = mapRqData ((Left e) `apEither`) (return ())  -- instance (MonadPlus m, MonadIO m, ServerMonad m) => (HasRqData m) where-instance (MonadIO m) => HasRqData (ServerPartT m) where+instance (MonadIO m, MonadPlus m) => HasRqData (ServerPartT m) where     askRqEnv =         do rq  <- askRq            mbi <- liftIO $ if ((rqMethod rq == POST) || (rqMethod rq == PUT)) && (isDecodable (ctype rq))