module Data.Aviation.WX.Fetcher where import Data.Char import Data.List (filter) import Data.Text (pack) import Network.HTTP import Data.Aviation.WX type ICAOStationDesignator = String fetchMetar :: ICAOStationDesignator -> IO (Either String Weather) fetchMetar icao = do let icao' = map toUpper . filter isAlpha $ icao metarString <- simpleHTTP (getRequest $ url icao') >>= getResponseBody let wx = pack $ "METAR " ++ relLine metarString ++ "=" putStrLn $ "Parsing " ++ show wx return $ parseWeather wx where url designator = "http://weather.noaa.gov/pub/data/observations/metar/stations/" ++ designator ++ ".TXT" relLine s = Prelude.lines s !! 1