{-# LANGUAGE OverloadedStrings #-} module Network.Pushbullet.Types.Permanent where import Network.Pushbullet.Types.Device import Network.Pushbullet.Types.SMS import Data.Monoid ( (<>) ) import Web.HttpApiData ( ToHttpApiData(..) ) data PermanentK = ThreadList | MessageList data Permanent (p :: PermanentK) where ThreadsOf :: !DeviceId -> Permanent 'ThreadList MessagesIn :: !DeviceId -> !SmsThreadId -> Permanent 'MessageList instance ToHttpApiData (Permanent 'ThreadList) where toUrlPiece p = case p of ThreadsOf (DeviceId d) -> d <> "_threads" instance ToHttpApiData (Permanent 'MessageList) where toUrlPiece p = case p of MessagesIn (DeviceId d) (SmsThreadId t) -> d <> "_thread_" <> t