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)