diff options
Diffstat (limited to 'src/Plugins')
| -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)] = | 
