Skip to content

Commit f607fc6

Browse files
committed
add: user picture
1 parent b5dca10 commit f607fc6

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

src/Facebook.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ module Facebook
4040
, User(..)
4141
, UserId
4242
, Gender(..)
43+
, Picture(..)
4344
, getUser
4445
, searchUsers
4546
, getUserCheckins

src/Facebook/Object/User.hs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{-# LANGUAGE DeriveDataTypeable, FlexibleContexts, OverloadedStrings #-}
22
module Facebook.Object.User
3-
( User(..)
3+
( Picture(..)
4+
, User(..)
45
, Gender(..)
56
, getUser
67
, searchUsers
@@ -19,7 +20,6 @@ import Data.Typeable (Typeable)
1920
import qualified Control.Monad.Trans.Resource as R
2021
import qualified Data.Aeson as A
2122

22-
2323
import Facebook.Types
2424
import Facebook.Monad
2525
import Facebook.Graph
@@ -42,14 +42,15 @@ data User =
4242
, userGender :: Maybe Gender
4343
, userLocale :: Maybe Text
4444
, userUsername :: Maybe Text
45+
, userPicture :: Maybe Picture
4546
, userVerified :: Maybe Bool
4647
, userEmail :: Maybe Text
4748
, userLocation :: Maybe Place
4849
}
4950
deriving (Eq, Ord, Show, Read, Typeable)
5051

5152
instance A.FromJSON User where
52-
parseJSON (A.Object v) =
53+
parseJSON (A.Object v) = do
5354
User <$> v .: "id"
5455
<*> v .:? "name"
5556
<*> v .:? "first_name"
@@ -58,12 +59,32 @@ instance A.FromJSON User where
5859
<*> v .:? "gender"
5960
<*> v .:? "locale"
6061
<*> v .:? "username"
62+
<*> v .:? "picture"
6163
<*> v .:? "verified"
6264
<*> v .:? "email"
6365
<*> v .:? "location"
6466
parseJSON _ = mzero
6567

6668

69+
-- | General picture record
70+
data Picture =
71+
Picture { pictureHeight :: Maybe Int
72+
, pictureIs_silhouette :: Bool
73+
, pictureUrl :: Text
74+
, pictureWidth :: Maybe Int
75+
}
76+
deriving (Eq, Ord, Show, Read, Typeable)
77+
78+
instance A.FromJSON Picture where
79+
parseJSON (A.Object o) = do
80+
v <- o .: "data"
81+
Picture <$> v .:? "height"
82+
<*> v .: "is_silhouette"
83+
<*> v .: "url"
84+
<*> v .:? "width"
85+
parseJSON _ = mzero
86+
87+
6788
-- | An user's gender.
6889
data Gender = Male | Female deriving (Eq, Ord, Show, Read, Enum, Typeable)
6990

0 commit comments

Comments
 (0)