module Facebook.Graph
( getObject
, postObject
, Id(..)
) where
import Control.Applicative
import Data.Typeable (Typeable)
import Network.HTTP.Types (Ascii)
import qualified Data.Aeson as A
import qualified Data.Conduit as C
import qualified Network.HTTP.Conduit as H
import qualified Network.HTTP.Types as HT
import Facebook.Types
import Facebook.Monad
import Facebook.Base
getObject :: (C.ResourceIO m, A.FromJSON a) =>
Ascii
-> [Argument]
-> Maybe (AccessToken anyKind)
-> FacebookT anyAuth m a
getObject path query mtoken =
runResourceInFb $
asJson =<< fbhttp (fbreq path mtoken query)
postObject :: (C.ResourceIO m, A.FromJSON a) =>
Ascii
-> [Argument]
-> AccessToken anyKind
-> FacebookT Auth m a
postObject path query token =
runResourceInFb $
asJson =<< fbhttp (fbreq path (Just token) query) { H.method = HT.methodPost }
newtype Id = Id { idCode :: Ascii }
deriving (Eq, Ord, Show, Typeable)
instance A.FromJSON Id where
parseJSON (A.Object v) = Id <$> v A..: "id"
parseJSON other = Id <$> A.parseJSON other