diff options
| author | Ben Boeckel <mathstuf@gmail.com> | 2014-02-05 02:34:15 -0500 | 
|---|---|---|
| committer | Ben Boeckel <mathstuf@gmail.com> | 2014-02-05 02:52:28 -0500 | 
| commit | bfc7362182f75cba63866cc915f9dbe62ebe9a42 (patch) | |
| tree | 6ba62bc8727e6d3cb7e38cba7456aa4b2bfa0824 /src | |
| parent | 7a4219abe3b4885820bece194c7f125274a711c6 (diff) | |
| download | xmobar-bfc7362182f75cba63866cc915f9dbe62ebe9a42.tar.gz xmobar-bfc7362182f75cba63866cc915f9dbe62ebe9a42.tar.bz2 | |
Drop curl dependency for the HTTP module
Diffstat (limited to 'src')
| -rw-r--r-- | src/Plugins/Monitors/Weather.hs | 24 | 
1 files changed, 7 insertions, 17 deletions
| diff --git a/src/Plugins/Monitors/Weather.hs b/src/Plugins/Monitors/Weather.hs index a008453..4030352 100644 --- a/src/Plugins/Monitors/Weather.hs +++ b/src/Plugins/Monitors/Weather.hs @@ -16,10 +16,7 @@ module Plugins.Monitors.Weather where  import Plugins.Monitors.Common -import Control.Monad (when) -import System.Process -import System.Exit -import System.IO +import Control.Exception (catch, IOException)  import Network.HTTP  import Text.ParserCombinators.Parsec @@ -134,19 +131,12 @@ stationUrl :: String -> String  stationUrl station = defUrl ++ station ++ ".TXT"  getData :: String -> IO String -getData url= -        do (i,o,e,p) <- runInteractiveCommand ("curl " ++ defUrl ++ url ++ ".TXT") -           exit <- waitForProcess p -           let closeHandles = do hClose o -                                 hClose i -                                 hClose e -           case exit of -             ExitSuccess -> do str <- hGetContents o -                               when (str == str) $ return () -                               closeHandles -                               return str -             _ -> do closeHandles -                     return "Could not retrieve data" +getData station = do +    let request = getRequest (stationUrl station) +    result <- simpleHTTP request +    catch (getResponseBody result) errHandler +    where errHandler :: IOException -> IO String +          errHandler _ = return "<Could not retrieve data>"  formatWeather :: [WeatherInfo] -> Monitor String  formatWeather [(WI st ss y m d h w v sk tC tF dp r p)] = | 
