reddit-0.2.1.0: src/Reddit/Actions/Moderation.hs
module Reddit.Actions.Moderation where
import Reddit.Routes.Moderation
import Reddit.Types.Error
import Reddit.Types.Listing
import Reddit.Types.Message
import Reddit.Types.Moderation
import Reddit.Types.Options
import Reddit.Types.Reddit
import Reddit.Types.Subreddit
import Reddit.Types.User
import Network.API.Builder.Error
-- | Get a list of existing bans on a subreddit.
-- User must be a moderator of the subreddit.
bans :: Monad m => Options BanID -> SubredditName -> RedditT m (Listing BanID Ban)
bans opts r = runRoute $ bansListing opts r
-- | Check to see if a user is banned from a subreddit. Logged-in user must
-- be a moderator of the subreddit
lookupBan :: Monad m => Username -> SubredditName -> RedditT m (Maybe Ban)
lookupBan u r = do
res <- runRoute $ banLookup u r
case res :: Listing BanID Ban of
Listing _ _ bs ->
case bs of
[b] -> return $ Just b
[] -> return Nothing
_-> failWith (APIError InvalidResponseError)
getModmail :: Monad m => RedditT m (Listing MessageID Message)
getModmail = runRoute $ modmail $ Options Nothing Nothing
getModmail' :: Monad m => Options MessageID -> RedditT m (Listing MessageID Message)
getModmail' = runRoute . modmail