{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses, TypeFamilies #-} module Happstack.Facebook.Pages where import Data.Maybe (catMaybes) import Happstack.Facebook.Common hiding (uid, name) import qualified Happstack.Facebook.Common as C import Text.JSON -- |checks whether a given user is an admin for a given page -- http://wiki.developers.facebook.com/index.php/Pages.isAdmin data IsAdmin = IsAdmin Page (Maybe User) instance (HasSessionKey m) => FacebookMethod m IsAdmin where type FacebookResponse IsAdmin = Bool parseResponse _ jstr = case decode jstr of (Ok bool) -> Right bool (Error msg) -> Left msg toParams (IsAdmin page mUser) = do sessionKey <- askSessionKey return $ [ ("method", "Pages.isAdmin") , ("session_key", sessionKey) , ("page_id", show (pageId page)) ] ++ catMaybes [ fmap (\user -> ("uid", show (C.uid user))) mUser ]