{-# 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
]