module Reddit.Routes.Subreddit where

import Reddit.Types.Subreddit hiding (title)
import Reddit.Types.SubredditSettings

import Network.API.Builder.Routes

aboutSubreddit :: SubredditName -> Route
aboutSubreddit :: SubredditName -> Route
aboutSubreddit (R Text
sub) = [Text] -> [URLParam] -> Method -> Route
Route [Text
"r", Text
sub, Text
"about"]
                               []
                               Method
"GET"

subredditSettings :: SubredditName -> Route
subredditSettings :: SubredditName -> Route
subredditSettings (R Text
sub) = [Text] -> [URLParam] -> Method -> Route
Route [Text
"r", Text
sub, Text
"about", Text
"edit"]
                                  []
                                  Method
"GET"

setSubredditSettings :: SubredditID -> SubredditSettings -> Route
setSubredditSettings :: SubredditID -> SubredditSettings -> Route
setSubredditSettings SubredditID
sr SubredditSettings
settings =
  [Text] -> [URLParam] -> Method -> Route
Route [Text
"api", Text
"site_admin"]
        [ Text
"sr" Text -> SubredditID -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditID
sr
        , Text
"description" Text -> Text -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Text
sidebarText SubredditSettings
settings
        , Text
"public_description" Text -> Text -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Text
descriptionText SubredditSettings
settings
        , Text
"title" Text -> Text -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Text
title SubredditSettings
settings
        , Text
"link_type" Text -> ContentOptions -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> ContentOptions
linkType SubredditSettings
settings
        , Text
"comment_score_hide_mins" Text -> Integer -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Integer
hideScoreMins SubredditSettings
settings
        , Text
"submit_link_label" Text -> Maybe Text -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Maybe Text
submitLinkLabel SubredditSettings
settings
        , Text
"submit_text_label" Text -> Maybe Text -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Maybe Text
submitTextLabel SubredditSettings
settings
        , Text
"domain_css" Text -> Maybe Bool -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Maybe Bool
domainCSS SubredditSettings
settings
        , Text
"domain_sidebar" Text -> Maybe Bool -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Maybe Bool
domainSidebar SubredditSettings
settings
        , Text
"show_media" Text -> Bool -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Bool
showMedia SubredditSettings
settings
        , Text
"over_18" Text -> Bool -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Bool
over18 SubredditSettings
settings
        , Text
"language" Text -> Text -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Text
language SubredditSettings
settings
        , Text
"wiki_edit_karma" Text -> Integer -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Integer
wikiEditKarma SubredditSettings
settings
        , Text
"wiki_edit_age" Text -> Integer -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Integer
wikiEditAge SubredditSettings
settings
        , Text
"wikimode" Text -> WikiEditMode -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> WikiEditMode
wikiEditMode SubredditSettings
settings
        , Text
"spam_comments" Text -> SpamFilterStrength -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> SpamFilterStrength
spamComments SubredditSettings
settings
        , Text
"spam_selfposts" Text -> SpamFilterStrength -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> SpamFilterStrength
spamSelfposts SubredditSettings
settings
        , Text
"spam_links" Text -> SpamFilterStrength -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> SpamFilterStrength
spamLinks SubredditSettings
settings
        , Text
"public_traffic" Text -> Bool -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> Bool
publicTrafficStats SubredditSettings
settings
        , Text
"type" Text -> SubredditType -> URLParam
forall a. ToQuery a => Text -> a -> URLParam
=. SubredditSettings -> SubredditType
subredditType SubredditSettings
settings ]
        Method
"POST"