module BattleNet.Yesod(YesodBattleNet(..), yesodBnetWithApp, yesodBnet) where
import BattleNet
import Yesod.Core
import Control.Monad
import Data.Text
import Network.HTTP.Conduit
class YesodBattleNet app where
battleNetKey :: app -> BattleNetApiKey
battleNetHttp :: app -> Manager
yesodBnetWithApp :: (YesodBattleNet app) => Text -> app -> (Manager -> BattleNetConnectionInfo -> IO a) -> IO a
yesodBnetWithApp region yesod endpoint =
endpoint manager settings
where settings = BattleNetConnectionInfo (battleNetKey yesod) region
manager = battleNetHttp yesod
yesodBnet :: (MonadHandler m, YesodBattleNet (HandlerSite m)) => Text -> (Manager -> BattleNetConnectionInfo -> IO a) -> m a
yesodBnet region endpoint = getYesod >>= liftIO . flip (yesodBnetWithApp region) endpoint