module Happstack.Facebook.XdReceiver where
import Control.Applicative((<$>))
import Control.Monad (MonadPlus(..))
import Control.Monad.Trans(MonadIO(..))
import Happstack.Server (ServerMonad(..), Response, dir)
import HSP
import Happstack.Server.HSP.HTML (webHSP)
import Happstack.Facebook.Common
import qualified HSX.XMLGenerator as HSX
import Network.URI (uriPath)
import System.FilePath ((</>), splitPath)
xdReceiverPart :: (MonadIO m, MonadPlus m, ServerMonad m, HasFacebookConfig m) => m Response
xdReceiverPart =
do config <- askFacebookConfig
let parts = case splitPath $ uriPath (connectURL config) of
("/": rest) -> rest
o -> o
dirs parts $ dir "xd_receiver.htm" $ webHSP xdReceiverXML
where
dirs :: (ServerMonad m, MonadPlus m) => [String] -> m a -> m a
dirs [] m = m
dirs (d:ds) m = dir d $ dirs ds m
xdReceiverXML :: (XMLGenerator m) => XMLGenT m (HSX.XML m)
xdReceiverXML =
<html>
<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
</body>
</html>
fbInit :: (XMLGenerator m, HasFacebookConfig m ) => ApiKey -> XMLGenT m (HSX.XML m)
fbInit (ApiKey apiKey) =
do config <- askFacebookConfig
let path = (uriPath (connectURL config)) </> "xd_receiver.htm"
<script type="text/javascript">
FB.init("<% apiKey %>", "<% path %>");
</script>
fbFeatureLoader :: (XMLGenerator m) => XMLGenT m (HSX.XML m)
fbFeatureLoader =
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>