Skip to content

Commit e0f8106

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

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-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: 22 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
@@ -33,6 +33,14 @@ import Facebook.Object.Checkin
3333
-- /NOTE:/ We still don't support all fields supported by
3434
-- Facebook. Please fill an issue if you need access to any other
3535
-- fields.
36+
data Picture =
37+
Picture { pictureHeight :: Maybe Int
38+
, pictureIs_silhouette :: Bool
39+
, pictureUrl :: Text
40+
, pictureWidth :: Maybe Int
41+
}
42+
deriving (Eq, Ord, Show, Read, Typeable)
43+
3644
data User =
3745
User { userId :: UserId
3846
, userName :: Maybe Text
@@ -42,14 +50,24 @@ data User =
4250
, userGender :: Maybe Gender
4351
, userLocale :: Maybe Text
4452
, userUsername :: Maybe Text
53+
, userPicture :: Maybe Picture
4554
, userVerified :: Maybe Bool
4655
, userEmail :: Maybe Text
4756
, userLocation :: Maybe Place
4857
}
4958
deriving (Eq, Ord, Show, Read, Typeable)
5059

60+
instance A.FromJSON Picture where
61+
parseJSON (A.Object o) = do
62+
v <- o .: "data"
63+
Picture <$> v .:? "height"
64+
<*> v .: "is_silhouette"
65+
<*> v .: "url"
66+
<*> v .:? "width"
67+
parseJSON _ = mzero
68+
5169
instance A.FromJSON User where
52-
parseJSON (A.Object v) =
70+
parseJSON (A.Object v) = do
5371
User <$> v .: "id"
5472
<*> v .:? "name"
5573
<*> v .:? "first_name"
@@ -58,6 +76,7 @@ instance A.FromJSON User where
5876
<*> v .:? "gender"
5977
<*> v .:? "locale"
6078
<*> v .:? "username"
79+
<*> v .:? "picture"
6180
<*> v .:? "verified"
6281
<*> v .:? "email"
6382
<*> v .:? "location"

0 commit comments

Comments
 (0)