packages feed

fb 0.15.0 → 0.15.1

raw patch · 3 files changed

+99/−1 lines, 3 files

Files

fb.cabal view
@@ -1,5 +1,5 @@ name:              fb-version:           0.15.0+version:           0.15.1 license:           BSD3 license-file:      LICENSE author:            Felipe Lessa@@ -54,6 +54,7 @@     Facebook.Pager     Facebook.Graph     Facebook.Object.Action+    Facebook.Object.FriendList     Facebook.Object.Checkin     Facebook.Object.User     Facebook.Object.Page
src/Facebook.hs view
@@ -45,6 +45,7 @@     , getUserCheckins     , Friend(..)     , getUserFriends+    , getUserFriendLists       -- ** Page     , Page(..)     , getPage@@ -63,6 +64,10 @@     , OrderApplication     , OrderStatus     , getOrder+      -- ** Friend list+    , FriendList(..)+    , FriendListType(..)+    , getFriendListMembers        -- * Facebook's Graph API basic functionality       -- ** Simple types@@ -138,6 +143,7 @@ import Facebook.Object.Action import Facebook.Object.Checkin import Facebook.Object.Order+import Facebook.Object.FriendList import Facebook.RealTime import Facebook.FQL import Facebook.TestUsers
+ src/Facebook/Object/FriendList.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveDataTypeable, FlexibleContexts, OverloadedStrings #-}+module Facebook.Object.FriendList+    ( FriendList(..)+    , FriendListType(..)+    , getUserFriendLists+    , getFriendListMembers+    ) where++import Control.Applicative+import Control.Monad (mzero)+import Control.Monad.Trans.Control (MonadBaseControl)+import Data.Aeson ((.:))+import Data.Text (Text)+import Data.Typeable (Typeable)++-- import qualified Control.Exception.Lifted as E+import qualified Data.Aeson as A+import qualified Data.Conduit as C+++import Facebook.Types+import Facebook.Monad+import Facebook.Graph+import Facebook.Pager+import Facebook.Object.User++-- | A friend list for a 'User'.+data FriendList =+    FriendList { friendListId    :: Id+               , friendListName  :: Text+               , friendListType  :: FriendListType+               }+    deriving (Eq, Ord, Show, Read, Typeable)++instance A.FromJSON FriendList where+    parseJSON (A.Object v) =+      FriendList <$> v .: "id"+                 <*> v .: "name"+                 <*> v .: "list_type"+    parseJSON _ = mzero++data FriendListType = CloseFriendsList | AcquaintancesList | RestrictedList+    | UserCreatedList | EducationList | WorkList | CurrentCityList | FamilyList+    deriving (Eq, Ord, Show, Read, Enum, Typeable)++instance A.FromJSON FriendListType where+    parseJSON (A.String "close_friends") = return CloseFriendsList+    parseJSON (A.String "acquaintances") = return AcquaintancesList+    parseJSON (A.String "restricted")    = return RestrictedList+    parseJSON (A.String "user_created")  = return UserCreatedList+    parseJSON (A.String "education")     = return EducationList+    parseJSON (A.String "work")          = return WorkList+    parseJSON (A.String "current_city")  = return CurrentCityList+    parseJSON (A.String "family")        = return FamilyList+    parseJSON _                          = mzero++instance A.ToJSON FriendListType where+    toJSON = A.toJSON . toText+        where+          toText :: FriendListType -> Text+          toText CloseFriendsList  = "close_friends"+          toText AcquaintancesList = "aquaintances"+          toText RestrictedList    = "restricted"+          toText UserCreatedList   = "user_created"+          toText EducationList     = "education"+          toText WorkList          = "work"+          toText CurrentCityList   = "current_city"+          toText FamilyList        = "family"++-- close_friends, acquaintances, restricted, user_created, education, work, current_city, family++-- | Get the friend lists of the given user.+getUserFriendLists ::+     (C.MonadResource m, MonadBaseControl IO m) =>+     UserId          -- ^ User ID or @\"me\"@.+  -> [Argument]      -- ^ Arguments to be passed to Facebook.+  -> UserAccessToken -- ^ User access token.+  -> FacebookT anyAuth m (Pager FriendList)+getUserFriendLists id_ query token =+  getObject ("/" <> idCode id_ <> "/friendlists") query (Just token)++-- | Get the members of a friend list.+getFriendListMembers ::+     (C.MonadResource m, MonadBaseControl IO m) =>+     Id              -- ^ List ID.+  -> [Argument]      -- ^ Arguments to be passed to Facebook.+  -> UserAccessToken -- ^ User access token.+  -> FacebookT anyAuth m (Pager Friend)+getFriendListMembers id_ query token =+  getObject ("/" <> idCode id_ <> "/members") query (Just token)+