{-# LANGUAGE CPP #-}
module Network.Wai.Middleware.Local
( local
) where
import Network.Wai (Middleware,remoteHost, Response)
import Network.Socket (SockAddr(..))
local :: Response -> Middleware
local :: Response -> Middleware
local resp :: Response
resp f :: Application
f r :: Request
r k :: Response -> IO ResponseReceived
k = case Request -> SockAddr
remoteHost Request
r of
SockAddrInet _ h :: HostAddress
h | HostAddress
h HostAddress -> HostAddress -> Bool
forall a. Eq a => a -> a -> Bool
== Integer -> HostAddress
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
home
-> Application
f Request
r Response -> IO ResponseReceived
k
#if !defined(mingw32_HOST_OS) && !defined(_WIN32)
SockAddrUnix _ -> Application
f Request
r Response -> IO ResponseReceived
k
#endif
_ -> Response -> IO ResponseReceived
k (Response -> IO ResponseReceived)
-> Response -> IO ResponseReceived
forall a b. (a -> b) -> a -> b
$ Response
resp
where
home :: Integer
home :: Integer
home = 127 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
+ (256 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* 256 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* 256) Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* 1