Loading Main.hs +4 −5 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import Control.Applicative ((<|>), liftA2) import Data.Monoid ((<>)) import Data.Maybe (fromMaybe) import Data.Text.Lazy (Text) import qualified Data.Text.Lazy as L import Text.Read (readMaybe) Loading @@ -13,7 +14,7 @@ getClientIP1 = header "CLIENT-IP" getClientIP2 :: ActionM (Maybe Text) getClientIP2 = fmap (maybe Nothing (Just . firstElement)) (header "X-FORWARDED-FOR") where fmap (fmap firstElement) (header "X-FORWARDED-FOR") where firstElement :: Text -> Text firstElement = head . L.splitOn "," Loading @@ -40,9 +41,7 @@ getEnvDefault variable defaultValue stringReader = do return $ case r of Nothing -> defaultValue Just [] -> defaultValue Just xs -> case stringReader xs of Nothing -> defaultValue Just x -> x Just xs -> fromMaybe defaultValue (stringReader xs) getListenPort :: IO Int getListenPort = getEnvDefault "PORT" 8081 readMaybe Loading @@ -51,4 +50,4 @@ main :: IO () main = do port <- getListenPort scotty port $ do get "/" $ getClientIP get "/" getClientIP Loading
Main.hs +4 −5 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import Control.Applicative ((<|>), liftA2) import Data.Monoid ((<>)) import Data.Maybe (fromMaybe) import Data.Text.Lazy (Text) import qualified Data.Text.Lazy as L import Text.Read (readMaybe) Loading @@ -13,7 +14,7 @@ getClientIP1 = header "CLIENT-IP" getClientIP2 :: ActionM (Maybe Text) getClientIP2 = fmap (maybe Nothing (Just . firstElement)) (header "X-FORWARDED-FOR") where fmap (fmap firstElement) (header "X-FORWARDED-FOR") where firstElement :: Text -> Text firstElement = head . L.splitOn "," Loading @@ -40,9 +41,7 @@ getEnvDefault variable defaultValue stringReader = do return $ case r of Nothing -> defaultValue Just [] -> defaultValue Just xs -> case stringReader xs of Nothing -> defaultValue Just x -> x Just xs -> fromMaybe defaultValue (stringReader xs) getListenPort :: IO Int getListenPort = getEnvDefault "PORT" 8081 readMaybe Loading @@ -51,4 +50,4 @@ main :: IO () main = do port <- getListenPort scotty port $ do get "/" $ getClientIP get "/" getClientIP