packages feed

webserver 0.6.0.1 → 0.7.0.0

raw patch · 5 files changed

+30/−11 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Network.Web.Server.Basic: serveHTTPMapIO :: Maybe FilePath -> Int -> ByteString -> (Request -> IO Path) -> IO ()
- Network.Web.Server.Params: BasicConfig :: (Request -> Path) -> (FilePath -> Maybe (Integer, Integer) -> IO ByteString) -> (FilePath -> IO (Maybe (Integer, UTCTime))) -> ByteString -> TCPInfo -> BasicConfig
+ Network.Web.Server.Params: BasicConfig :: (Request -> IO Path) -> (FilePath -> Maybe (Integer, Integer) -> IO ByteString) -> (FilePath -> IO (Maybe (Integer, UTCTime))) -> ByteString -> TCPInfo -> BasicConfig
- Network.Web.Server.Params: mapper :: BasicConfig -> Request -> Path
+ Network.Web.Server.Params: mapper :: BasicConfig -> Request -> IO Path

Files

Network/Web/HTTP.hs view
@@ -26,7 +26,7 @@ import Network.Web.Params import Network.Web.URI import System.IO-import System.IO.Error hiding (try)+import System.IO.Error (isEOFError, ioeGetErrorType) import Text.Printf  ----------------------------------------------------------------
Network/Web/Server/Basic.hs view
@@ -10,6 +10,7 @@  {-# OPTIONS -Wall #-} module Network.Web.Server.Basic (serveHTTP,+                                 serveHTTPMapIO,                                  basicServer,                                  module Network.Web.Server.Params) where @@ -46,6 +47,7 @@  {-|   Run an HTTP server, using a default BasicConfig.+  If you need to perform IO in the site mapping function (e.g. to check for the existence of files), use 'serveHTTPMapIO', -} serveHTTP :: Maybe FilePath -- ^ Directory to write logfiles, "access.log" and "error.log".  Will be created if it doesn't exist.                             -- if Nothing, errors will be written to stderr@@ -53,7 +55,20 @@           -> S.ByteString   -- ^ Server name           -> (Request -> Path)  -- ^ site mapping function           -> IO ()-serveHTTP m'logPath httpPort servName sitemap = do+serveHTTP m'logPath httpPort servName sitemap =+    serveHTTPMapIO m'logPath httpPort servName (return . sitemap)++{-|+  Run an HTTP server, using a default BasicConfig.+  Can perform IO in the site mapping function.+-}+serveHTTPMapIO :: Maybe FilePath -- ^ Directory to write logfiles, "access.log" and "error.log".  Will be created if it doesn't exist.+                                 -- if Nothing, errors will be written to stderr+               -> Int            -- ^ HTTP port+               -> S.ByteString   -- ^ Server name+               -> (Request -> IO Path)  -- ^ site mapping function, in IO+               -> IO ()+serveHTTPMapIO m'logPath httpPort servName sitemapIO = do     (accHandler,errHandler,logwait) <- case m'logPath of         Nothing -> return (const (return ()), hPutStrLn stderr, return ())         Just logPath -> do@@ -85,7 +100,7 @@         topHandler tcpi = basicServer $ defaultConfig {               serverName = servName             , tcpInfo = tcpi-            , mapper = sitemap+            , mapper = sitemapIO             }         runserver = withSocketsDo $ do             sock <- listenOn (PortNumber $ fromIntegral httpPort)@@ -204,7 +219,7 @@ lookupAndParseDate key req = lookupField key req >>= parseDate  tryGet :: BasicConfig -> Request -> [String] -> IO (Maybe Response)-tryGet cnf req langs = tryGet' $ mapper cnf req+tryGet cnf req langs = tryGet' =<< mapper cnf req   where     tryGet' None          = return Nothing     tryGet' (File file)   = tryGetFile cnf req file langs@@ -276,7 +291,7 @@ ----------------------------------------------------------------  tryHead :: BasicConfig -> Request -> [String] -> IO (Maybe Response)-tryHead cnf req langs = tryHead' (mapper cnf req)+tryHead cnf req langs = tryHead' =<< mapper cnf req   where     tryHead' None        = return Nothing     tryHead' (PathCGI _) = return Nothing@@ -308,9 +323,10 @@       else Just uri { uriPath = path `S.append` "/" }  tryRedirect :: BasicConfig -> Request -> [String] -> IO (Maybe Response)-tryRedirect cnf req langs = maybe (return Nothing)-    (\ruri -> tryRedirect' (mapper cnf $ rreq ruri) ruri)-    (redirectURI uri)+tryRedirect cnf req langs = case redirectURI uri of+    Nothing   -> return Nothing+    Just ruri -> do path <- mapper cnf $ rreq ruri+                    tryRedirect' path ruri   where     uri = reqURI req     rreq ruri = req {reqURI = ruri}@@ -330,7 +346,9 @@ ----------------------------------------------------------------  tryPost :: BasicConfig -> Request -> IO Response-tryPost cnf req = case mapper cnf req of+tryPost cnf req = do+  path <- mapper cnf req+  case path of     PathCGI cgi -> fromMaybe undefined <$> tryGetCGI cnf req cgi     Handler resp-> resp     _           -> return responseBadRequest
Network/Web/Server/CGI.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings, CPP #-} +{-# OPTIONS_GHC -fno-warn-dodgy-imports #-} module Network.Web.Server.CGI (tryGetCGI) where  import Prelude hiding (catch)
Network/Web/Server/Params.hs view
@@ -17,7 +17,7 @@ -} data BasicConfig = BasicConfig {    -- | A mapper from 'URI' to 'Path'.-   mapper :: Request -> Path+   mapper :: Request -> IO Path    -- | Resource obtaining function. The second argument is    --   (offset of the resource, and length from the offset).  , obtain :: FilePath -> Maybe (Integer,Integer) -> IO L.ByteString
webserver.cabal view
@@ -1,5 +1,5 @@ Name:                   webserver-Version:                0.6.0.1+Version:                0.7.0.0 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             John W. Lato <jwlato@gmail.com> License:                BSD3