packages feed

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)