{-# OPTIONS_GHC -F -pgmFtrhsx #-} 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 Happstack.Facebook.FacebookT 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 = 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" fbFeatureLoader :: (XMLGenerator m) => XMLGenT m (HSX.XML m) fbFeatureLoader =