aboutsummaryrefslogtreecommitdiff
path: root/lib/Web/OpenWeatherMap/API.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Web/OpenWeatherMap/API.hs')
-rw-r--r--lib/Web/OpenWeatherMap/API.hs24
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/Web/OpenWeatherMap/API.hs b/lib/Web/OpenWeatherMap/API.hs
index b9624f8..516845c 100644
--- a/lib/Web/OpenWeatherMap/API.hs
+++ b/lib/Web/OpenWeatherMap/API.hs
@@ -14,12 +14,14 @@ module Web.OpenWeatherMap.API
import Data.Proxy (Proxy(..))
-import Servant.API ((:<|>)(..), (:>), Get, JSON, QueryParam)
+import Servant.API ((:<|>)(..), (:>), Get, JSON, QueryParam', Required, Strict)
import Servant.Client (ClientM, client)
import Web.OpenWeatherMap.Types.CurrentWeather (CurrentWeather)
import Web.OpenWeatherMap.Types.ForecastWeather (ForecastWeather)
+type QueryParam = QueryParam' '[ Required, Strict]
+
type GetCurrentWeather = AppId :> Get '[ JSON] CurrentWeather
type GetForecastWeather = AppId :> Get '[ JSON] ForecastWeather
@@ -36,25 +38,25 @@ type API = Current :<|> Forecast
-- | Request current weather in the city.
weatherByName ::
- Maybe String -- ^ City name, e. g. \"Moscow\" or \"Moscow,ru\".
- -> Maybe String -- ^ API key.
+ String -- ^ City name, e. g. \"Moscow\" or \"Moscow,ru\".
+ -> String -- ^ API key.
-> ClientM CurrentWeather
-- | Request current weather at the geographic coordinates (in decimal degrees).
weatherByCoord ::
- Maybe Double -- ^ Latitude, e. g. 55.7522200 for Moscow.
- -> Maybe Double -- ^ Longitude, e. g. 37.6155600 for Moscow.
- -> Maybe String -- ^ API key.
+ Double -- ^ Latitude, e. g. 55.7522200 for Moscow.
+ -> Double -- ^ Longitude, e. g. 37.6155600 for Moscow.
+ -> String -- ^ API key.
-> ClientM CurrentWeather
-- | Request forecast weather in the city.
forecastByName ::
- Maybe String -- ^ City name, e. g. \"Moscow\" or \"Moscow,ru\".
- -> Maybe String -- ^ API key.
+ String -- ^ City name, e. g. \"Moscow\" or \"Moscow,ru\".
+ -> String -- ^ API key.
-> ClientM ForecastWeather
-- | Request current weather at the geographic coordinates (in decimal degrees).
forecastByCoord ::
- Maybe Double -- ^ Latitude, e. g. 55.7522200 for Moscow.
- -> Maybe Double -- ^ Longitude, e. g. 37.6155600 for Moscow.
- -> Maybe String -- ^ API key.
+ Double -- ^ Latitude, e. g. 55.7522200 for Moscow.
+ -> Double -- ^ Longitude, e. g. 37.6155600 for Moscow.
+ -> String -- ^ API key.
-> ClientM ForecastWeather
(weatherByName :<|> weatherByCoord) :<|> (forecastByName :<|> forecastByCoord) =
client (Proxy :: Proxy API)