module Fixer.API
( FixerAPI
, GetLatest
, GetAtDate
, fixerAPI
, getLatest
, getAtDate
) where
import Data.Proxy
import Data.Time
import Servant.API
import Servant.Client
import Fixer.Types
fixerAPI :: Proxy FixerAPI
fixerAPI = Proxy
type FixerAPI = GetLatest :<|> GetAtDate
type GetLatest
= "latest" :> QueryParam "base" Currency :> QueryParam "symbols" Symbols :> Get '[ JSON] Rates
type GetAtDate
= Capture "date" Day :> QueryParam "base" Currency :> QueryParam "symbols" Symbols :> Get '[ JSON] Rates
getLatest :: Maybe Currency -> Maybe Symbols -> ClientM Rates
getAtDate :: Day -> Maybe Currency -> Maybe Symbols -> ClientM Rates
getLatest :<|> getAtDate = client fixerAPI