module Proxy (getProxyFromEnvironment, getProxyFromConfig) where import System.Environment import Network.Browser import System.IO.Error import Network.URI (parseURI, nullURI) import Data.Maybe (fromMaybe) import qualified Control.Exception as C import qualified Configuration getProxyFromEnvironment :: IO Proxy getProxyFromEnvironment = do proxy <- C.try (getEnv "HTTP_PROXY") :: IO (Either C.IOException String) case proxy of Left _ -> return NoProxy Right p -> return $ Proxy p Nothing getProxyFromConfig :: Configuration.Configuration -> Proxy getProxyFromConfig config = case Configuration.cfgHttpProxy config of Nothing -> NoProxy Just proxy -> let address = Configuration.hpUrl proxy name = fromMaybe "" $ Configuration.hpUsername proxy pass = fromMaybe "" $ Configuration.hpPassword proxy auth = AuthBasic "" name pass $ fromMaybe nullURI (parseURI address) in Proxy address (Just auth)