module Network.Pushbullet.Types.User where
import Network.Pushbullet.Types.Misc
import Network.Pushbullet.Types.Time
import Data.Aeson
import Data.Text ( Text )
data User
= User
{ userCreated :: PushbulletTime
, userEmail :: EmailAddress
, userEmailNormalized :: EmailAddress
, userId :: UserId
, userImageUrl :: Url
, userMaxUploadSize :: Double
, userModified :: PushbulletTime
, userName :: Name
}
deriving (Eq, Show)
instance FromJSON User where
parseJSON (Object o) = pure User
<*> o .: "created"
<*> o .: "email"
<*> o .: "email_normalized"
<*> o .: "iden"
<*> o .: "image_url"
<*> o .: "max_upload_size"
<*> o .: "modified"
<*> o .: "name"
parseJSON _ = fail "cannot parse user from non-object"
newtype UserId = UserId Text
deriving (Eq, FromJSON, Show, ToJSON)