-- | Contains actions for interacting with a Subreddit as a whole.
module Reddit.Actions.Subreddit
  ( getSubredditInfo
  , getSubredditSettings
  , setSubredditSettings ) where

import Reddit.Types
import Reddit.Types.Empty
import Reddit.Types.Reddit
import Reddit.Types.Subreddit
import Reddit.Types.SubredditSettings
import qualified Reddit.Routes as Route

-- | Get the info for a specific subreddit. This info includes things like
--   sidebar contents, description and ID.
getSubredditInfo :: Monad m => SubredditName -> RedditT m Subreddit
getSubredditInfo :: SubredditName -> RedditT m Subreddit
getSubredditInfo = Route -> RedditT m Subreddit
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (Route -> RedditT m Subreddit)
-> (SubredditName -> Route) -> SubredditName -> RedditT m Subreddit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SubredditName -> Route
Route.aboutSubreddit

-- | Get the settings for a subreddit that you moderate.
getSubredditSettings :: Monad m => SubredditName -> RedditT m SubredditSettings
getSubredditSettings :: SubredditName -> RedditT m SubredditSettings
getSubredditSettings = Route -> RedditT m SubredditSettings
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (Route -> RedditT m SubredditSettings)
-> (SubredditName -> Route)
-> SubredditName
-> RedditT m SubredditSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SubredditName -> Route
Route.subredditSettings

-- | Modify the settings for a subreddit that you moderate.
setSubredditSettings :: Monad m => SubredditID -> SubredditSettings -> RedditT m ()
setSubredditSettings :: SubredditID -> SubredditSettings -> RedditT m ()
setSubredditSettings SubredditID
r SubredditSettings
s = RedditT m Empty -> RedditT m ()
forall (m :: * -> *). Monad m => m Empty -> m ()
nothing (RedditT m Empty -> RedditT m ())
-> RedditT m Empty -> RedditT m ()
forall a b. (a -> b) -> a -> b
$ Route -> RedditT m Empty
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (SubredditID -> SubredditSettings -> Route
Route.setSubredditSettings SubredditID
r SubredditSettings
s)