{-# LANGUAGE TemplateHaskell #-}
module BfHaskell.LoginAPI.Types
(
LoginCredentials(..)
, SessionToken(..)
, LoginHandler(..), fetchToken, getAppKey, getExpiry
, defaultLoginUrl
) where
import Data.Text (Text)
import Data.Time.Clock (NominalDiffTime)
import Polysemy
defaultLoginUrl :: Text
defaultLoginUrl = "https://identitysso-cert.betfair.com/api/certlogin"
data LoginCredentials = LoginCredentials
{ _lcUsername :: Text
, _lcPassword :: Text
, _lcAppKey :: Text
, _lcPublicCertificate :: Text
, _lcPrivateKey :: Text
, _lcLoginUrl :: Text
, _lcExpiry :: NominalDiffTime
}
newtype SessionToken = SessionToken Text
deriving (Show)
data LoginHandler m a where
FetchToken :: LoginHandler m SessionToken
GetAppKey :: LoginHandler m Text
GetExpiry :: LoginHandler m NominalDiffTime
makeSem_ ''LoginHandler
fetchToken :: Member LoginHandler r => Sem r SessionToken
getAppKey :: Member LoginHandler r => Sem r Text
getExpiry :: Member LoginHandler r => Sem r NominalDiffTime