imagepaste-0.2.0.0: src/Proxy.hs
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)