aboutsummaryrefslogtreecommitdiff
path: root/lib/Web/OpenWeatherMap/Types
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Web/OpenWeatherMap/Types')
-rw-r--r--lib/Web/OpenWeatherMap/Types/City.hs21
-rw-r--r--lib/Web/OpenWeatherMap/Types/Coord.hs4
-rw-r--r--lib/Web/OpenWeatherMap/Types/Forecast.hs23
-rw-r--r--lib/Web/OpenWeatherMap/Types/ForecastWeather.hs20
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)