diff options
Diffstat (limited to 'lib/Web/OpenWeatherMap/Types')
-rw-r--r-- | lib/Web/OpenWeatherMap/Types/City.hs | 21 | ||||
-rw-r--r-- | lib/Web/OpenWeatherMap/Types/Coord.hs | 4 | ||||
-rw-r--r-- | lib/Web/OpenWeatherMap/Types/Forecast.hs | 23 | ||||
-rw-r--r-- | lib/Web/OpenWeatherMap/Types/ForecastWeather.hs | 20 |
4 files changed, 66 insertions, 2 deletions
diff --git a/lib/Web/OpenWeatherMap/Types/City.hs b/lib/Web/OpenWeatherMap/Types/City.hs new file mode 100644 index 0000000..bb6cd6d --- /dev/null +++ b/lib/Web/OpenWeatherMap/Types/City.hs @@ -0,0 +1,21 @@ +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} + +module Web.OpenWeatherMap.Types.City + ( City(..) + ) where + +import GHC.Generics (Generic) + +import Data.Aeson (FromJSON) + +import Web.OpenWeatherMap.Types.Coord (Coord) + +data City = City + { name :: String + , country :: Maybe String + , coord :: Coord + , timezone :: Int + , sunset :: Int + , sunrise :: Int + } deriving (Show, Generic, FromJSON) diff --git a/lib/Web/OpenWeatherMap/Types/Coord.hs b/lib/Web/OpenWeatherMap/Types/Coord.hs index 517c532..0751964 100644 --- a/lib/Web/OpenWeatherMap/Types/Coord.hs +++ b/lib/Web/OpenWeatherMap/Types/Coord.hs @@ -10,6 +10,6 @@ import GHC.Generics (Generic) import Data.Aeson (FromJSON) data Coord = Coord - { lon :: Double - , lat :: Double + { lon :: Maybe Double + , lat :: Maybe Double } deriving (Show, Generic, FromJSON) diff --git a/lib/Web/OpenWeatherMap/Types/Forecast.hs b/lib/Web/OpenWeatherMap/Types/Forecast.hs new file mode 100644 index 0000000..3434930 --- /dev/null +++ b/lib/Web/OpenWeatherMap/Types/Forecast.hs @@ -0,0 +1,23 @@ +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} + +module Web.OpenWeatherMap.Types.Forecast + ( Forecast(..) + ) where + +import GHC.Generics (Generic) + +import Data.Aeson (FromJSON) + +import Web.OpenWeatherMap.Types.Clouds (Clouds) +import Web.OpenWeatherMap.Types.Main (Main) +import Web.OpenWeatherMap.Types.Weather (Weather) +import Web.OpenWeatherMap.Types.Wind (Wind) + +data Forecast = Forecast + { dt :: Int + , clouds :: Clouds + , main :: Main + , weather :: [Weather] + , wind :: Wind + } deriving (Show, Generic, FromJSON) diff --git a/lib/Web/OpenWeatherMap/Types/ForecastWeather.hs b/lib/Web/OpenWeatherMap/Types/ForecastWeather.hs new file mode 100644 index 0000000..fa8e50a --- /dev/null +++ b/lib/Web/OpenWeatherMap/Types/ForecastWeather.hs @@ -0,0 +1,20 @@ +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} + +module Web.OpenWeatherMap.Types.ForecastWeather + ( ForecastWeather(..) + ) where + +import GHC.Generics (Generic) + +import Data.Aeson (FromJSON) + +import Web.OpenWeatherMap.Types.City (City) +import Web.OpenWeatherMap.Types.Forecast (Forecast) + +-- | Response to requests for forecast weather. +-- Refer to <https://openweathermap.org/forecast5>. +data ForecastWeather = ForecastWeather + { list :: [Forecast] + , city :: City + } deriving (Show, Generic, FromJSON) |