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