module Network.Google.EmailMigration.Types.Product where
import Network.Google.EmailMigration.Types.Sum
import Network.Google.Prelude
data MailItem = MailItem'
{ _miIsDeleted :: !(Maybe Bool)
, _miIsDraft :: !(Maybe Bool)
, _miIsStarred :: !(Maybe Bool)
, _miKind :: !Text
, _miIsUnread :: !(Maybe Bool)
, _miLabels :: !(Maybe [Text])
, _miIsInbox :: !(Maybe Bool)
, _miIsTrash :: !(Maybe Bool)
, _miIsSent :: !(Maybe Bool)
} deriving (Eq,Show,Data,Typeable,Generic)
mailItem
:: MailItem
mailItem =
MailItem'
{ _miIsDeleted = Nothing
, _miIsDraft = Nothing
, _miIsStarred = Nothing
, _miKind = "mailItem"
, _miIsUnread = Nothing
, _miLabels = Nothing
, _miIsInbox = Nothing
, _miIsTrash = Nothing
, _miIsSent = Nothing
}
miIsDeleted :: Lens' MailItem (Maybe Bool)
miIsDeleted
= lens _miIsDeleted (\ s a -> s{_miIsDeleted = a})
miIsDraft :: Lens' MailItem (Maybe Bool)
miIsDraft
= lens _miIsDraft (\ s a -> s{_miIsDraft = a})
miIsStarred :: Lens' MailItem (Maybe Bool)
miIsStarred
= lens _miIsStarred (\ s a -> s{_miIsStarred = a})
miKind :: Lens' MailItem Text
miKind = lens _miKind (\ s a -> s{_miKind = a})
miIsUnread :: Lens' MailItem (Maybe Bool)
miIsUnread
= lens _miIsUnread (\ s a -> s{_miIsUnread = a})
miLabels :: Lens' MailItem [Text]
miLabels
= lens _miLabels (\ s a -> s{_miLabels = a}) .
_Default
. _Coerce
miIsInbox :: Lens' MailItem (Maybe Bool)
miIsInbox
= lens _miIsInbox (\ s a -> s{_miIsInbox = a})
miIsTrash :: Lens' MailItem (Maybe Bool)
miIsTrash
= lens _miIsTrash (\ s a -> s{_miIsTrash = a})
miIsSent :: Lens' MailItem (Maybe Bool)
miIsSent = lens _miIsSent (\ s a -> s{_miIsSent = a})
instance FromJSON MailItem where
parseJSON
= withObject "MailItem"
(\ o ->
MailItem' <$>
(o .:? "isDeleted") <*> (o .:? "isDraft") <*>
(o .:? "isStarred")
<*> (o .:? "kind" .!= "mailItem")
<*> (o .:? "isUnread")
<*> (o .:? "labels" .!= mempty)
<*> (o .:? "isInbox")
<*> (o .:? "isTrash")
<*> (o .:? "isSent"))
instance ToJSON MailItem where
toJSON MailItem'{..}
= object
(catMaybes
[("isDeleted" .=) <$> _miIsDeleted,
("isDraft" .=) <$> _miIsDraft,
("isStarred" .=) <$> _miIsStarred,
Just ("kind" .= _miKind),
("isUnread" .=) <$> _miIsUnread,
("labels" .=) <$> _miLabels,
("isInbox" .=) <$> _miIsInbox,
("isTrash" .=) <$> _miIsTrash,
("isSent" .=) <$> _miIsSent])