packages feed

webserver 0.1.1 → 0.2.0

raw patch · 7 files changed

+57/−16 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Network.Web.Utils: TCPInfo :: HostName -> ServiceName -> HostName -> ServiceName -> TCPInfo
+ Network.Web.Utils: data TCPInfo
+ Network.Web.Utils: getTCPInfo :: Socket -> IO TCPInfo
+ Network.Web.Utils: instance Eq TCPInfo
+ Network.Web.Utils: instance Show TCPInfo
+ Network.Web.Utils: myAddr :: TCPInfo -> HostName
+ Network.Web.Utils: myPort :: TCPInfo -> ServiceName
+ Network.Web.Utils: peerAddr :: TCPInfo -> HostName
+ Network.Web.Utils: peerPort :: TCPInfo -> ServiceName

Files

Network/Web/HTTP.hs view
@@ -24,6 +24,7 @@ import qualified Data.Map as Map hiding (Map) import Data.Maybe import IO hiding (try)+import System.IO.Error hiding (try) import Network.URI import Network.Web.Params import Text.Printf@@ -156,7 +157,8 @@ receive hdl = do     mreq <- try $ receiveRequest hdl     case mreq of-      Left  e   -> if isEOFError e+      Left  e   -> if isEOFError e ||+                      show (ioeGetErrorType e) == "resource vanished"                    then throw TerminatedByClient                    else return Nothing       Right req -> return $ Just req@@ -228,7 +230,9 @@     sendResponseFields h ver persist rsp     hPutStr h crlf     sendResponseBody h ver rsp-    hFlush h+    hFlush h `catch` ignore+  where+    ignore _ = return ()  sendStatusLine :: Handle -> Version -> Response -> IO () sendStatusLine h ver rsp = do
Network/Web/Server.hs view
@@ -1,5 +1,5 @@ {-|-  A library for HTTP server.+  HTTP server library. -} module Network.Web.Server (connection, WebServer, WebConfig(..)) where 
Network/Web/Server/Basic.hs view
@@ -15,7 +15,6 @@ import qualified Data.ByteString.Lazy.Char8 as LBS import Data.List import Data.Time-import Network.TCPInfo import Network.URI hiding (path) import Network.Web.Date import Network.Web.HTTP
Network/Web/Server/CGI.hs view
@@ -5,7 +5,6 @@ import Data.ByteString.Lazy.Char8 (ByteString) import qualified Data.ByteString.Lazy.Char8 as LBS import Data.Char-import Network.TCPInfo import Network.URI import Network.Web.HTTP import Network.Web.Server.Params
Network/Web/Server/Params.hs view
@@ -3,7 +3,7 @@ import Data.ByteString.Lazy.Char8 (ByteString) import Data.Time import Network.URI-import Network.TCPInfo+import Network.Web.Utils  {-|   The configuration for the basic web server.
Network/Web/Utils.hs view
@@ -3,7 +3,10 @@ -} module Network.Web.Utils where +import Data.List+import Network.Socket import Network.URI+import System.IO  {-|   Getting a hostname from 'URI'.@@ -16,3 +19,36 @@ -} toURLwoPort :: URI -> String toURLwoPort uri = uriScheme uri ++ "//" ++ uriHostName uri ++ uriPath uri ++ uriQuery uri++----------------------------------------------------------------++{-|+  TCP connection information.+-}+data TCPInfo = TCPInfo {+  -- | Local IP address+    myAddr :: HostName+  -- | Local port number+  , myPort :: ServiceName+  -- | Remote IP address+  , peerAddr :: HostName+  -- | Remote port number+  , peerPort :: ServiceName+  } deriving (Eq,Show)++{-|+  Getting TCP connection information.+-}+getTCPInfo :: Socket -> IO TCPInfo+getTCPInfo sock = do+    (Just vMyAddr,   Just vMyPort)   <- getSocketName sock >>= getInfo+    (Just vPeerAddr, Just vPeerPort) <- getPeerName sock >>= getInfo+    return TCPInfo { myAddr = strip vMyAddr+                   , myPort = vMyPort+                   , peerAddr = strip vPeerAddr+                   , peerPort = vPeerPort}+  where+    getInfo = getNameInfo [NI_NUMERICHOST, NI_NUMERICSERV] True True+    strip x+      | "::ffff:" `isPrefixOf` x = drop 7 x+      | otherwise                = x
webserver.cabal view
@@ -1,26 +1,29 @@ Name:                   webserver-Version:                0.1.1+Version:                0.2.0 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3 License-File:           LICENSE Synopsis:               HTTP server library-Description:            A simple but practical library of HTTP server.+Description:            A simple but practical library of HTTP server Category:               Network Cabal-Version:          >= 1.6 Build-Type:             Simple library   GHC-Options:          -Wall -O2-  Exposed-Modules:      Network.Web.HTTP,-                        Network.Web.Server,-                        Network.Web.Server.Basic,+  Exposed-Modules:      Network.Web.HTTP+                        Network.Web.Server+                        Network.Web.Server.Basic                         Network.Web.Utils-  Other-Modules:        Network.Web.Date,-                        Network.Web.Params,-                        Network.Web.Server.CGI,-                        Network.Web.Server.Lang,-                        Network.Web.Server.Params,+  Other-Modules:        Network.Web.Date+                        Network.Web.Params+                        Network.Web.Server.CGI+                        Network.Web.Server.Lang+                        Network.Web.Server.Params                         Network.Web.Server.Range   Build-Depends:        base >= 4 && < 10, parsec >= 3,                         haskell98, network, bytestring, containers,                         filepath, time, unix, process, c10k+Source-Repository head+  Type:                 git+  Location:             git://github.com/kazu-yamamoto/webserver.git