module Reddit.Actions.Message
( getInbox
, getInbox'
, getUnread
, getUnread'
, markRead
, sendMessage
, sendMessageWithCaptcha
, replyMessage ) where
import Reddit.Types.Captcha
import Reddit.Types.Empty
import Reddit.Types.Listing
import Reddit.Types.Message
import Reddit.Types.Options
import Reddit.Types.Reddit
import Reddit.Types.Thing
import Reddit.Types.User
import qualified Reddit.Routes.Message as Route
import qualified Reddit.Routes.Thing as Route
import Data.Default.Class
import Data.Text (Text)
import Network.API.Builder.Query
getInbox :: Monad m => RedditT m (Listing MessageKind Message)
getInbox = runRoute $ Route.inbox False def
getInbox' :: Monad m => Bool -> Options MessageKind -> RedditT m (Listing MessageKind Message)
getInbox' m o = runRoute $ Route.inbox m o
getUnread :: Monad m => RedditT m (Listing MessageKind Message)
getUnread = runRoute $ Route.unread False def
getUnread' :: Monad m
=> Bool
-> Options MessageKind
-> RedditT m (Listing MessageKind Message)
getUnread' m o = runRoute $ Route.unread m o
markRead :: (ToQuery a, Thing a, Monad m) => a -> RedditT m ()
markRead = nothing . runRoute . Route.readMessage
sendMessage :: Monad m
=> Username
-> Text
-> Text
-> RedditT m ()
sendMessage u s b = nothing $ runRoute $ Route.sendMessage u s b
sendMessageWithCaptcha :: Monad m
=> Username
-> Text
-> Text
-> CaptchaID
-> Text
-> RedditT m ()
sendMessageWithCaptcha u s b i c = nothing $ runRoute $ Route.sendMessage u s b `withCaptcha` (i, c)
replyMessage :: (Monad m, Thing a)
=> a
-> Text
-> RedditT m MessageID
replyMessage t b = do
POSTWrapped res <- runRoute $ Route.reply t b
return res