module Network.Pushbullet.Types.Ephemeral where
import Network.Pushbullet.Types.Device
import Network.Pushbullet.Types.Misc
import Network.Pushbullet.Types.User
import Data.Aeson
import Data.Text ( Text )
import Lens.Micro.TH
data Ephemeral
= Sms
{ _ephSmsSourceUser :: !UserId
, _ephSmsTargetDevice :: !DeviceId
, _ephSmsConversation :: !PhoneNumber
, _ephSmsMessage :: !Text
}
| Clipboard
{ _ephClipBody :: !Text
, _ephClipSourceUser :: !UserId
, _ephClipSourceDevice :: !DeviceId
}
deriving (Eq, Show)
makeLenses ''Ephemeral
instance ToJSON Ephemeral where
toJSON o = case o of
Sms{..} -> object
[ "type" .= id @Text "push"
, "push" .= object
[ "type" .= id @Text "messaging_extension_reply"
, "package_name" .= id @Text "com.pushbullet.android"
, "source_user_iden" .= _ephSmsSourceUser
, "target_device_iden" .= _ephSmsTargetDevice
, "conversation_iden" .= _ephSmsConversation
, "message" .= _ephSmsMessage
]
]
Clipboard{..} -> object
[ "type" .= id @Text "push"
, "push" .= object
[ "type" .= id @Text "clip"
, "body" .= _ephClipBody
, "source_user_iden" .= _ephClipSourceUser
, "source_device_iden" .= _ephClipSourceDevice
]
]