module SMSAero.Client where
import Control.Monad.Trans.Either
import Data.Proxy
import Data.Text (Text)
import Servant.API
import Servant.Client
import SMSAero.API
import SMSAero.Utils
smsAeroClient :: Client SMSAeroAPI
smsAeroClient = client (Proxy :: Proxy SMSAeroAPI) host
where
host = BaseUrl Https "gate.smsaero.ru" 443
type SmsAero a = EitherT ServantError IO (SmsAeroResponse a)
smsAeroSend :: SMSAeroAuth -> Phone -> Text -> Signature -> Maybe SMSAeroDate -> SmsAero SendResponse
smsAeroStatus :: SMSAeroAuth -> MessageId -> SmsAero StatusResponse
smsAeroBalance :: SMSAeroAuth -> SmsAero BalanceResponse
smsAeroSenders :: SMSAeroAuth -> SmsAero SendersResponse
smsAeroSign :: SMSAeroAuth -> SmsAero SignResponse
(smsAeroSend :<|>
smsAeroStatus :<|>
smsAeroBalance :<|>
smsAeroSenders :<|>
smsAeroSign) = distributeClient smsAeroClient