module Reddit.Types.SubredditSettings
( SubredditSettings(..)
, ContentOptions(..)
, SpamFilterStrength(..)
, SubredditType(..)
, WikiEditMode(..) ) where
import Reddit.Parser
import Reddit.Utilities
import Control.Applicative
import Data.Aeson
import Data.Default.Class
import Data.Monoid hiding (Any(..))
import Data.Text (Text)
import Network.API.Builder.Query
import Prelude
data SubredditSettings = SubredditSettings { :: Text
, SubredditSettings -> Text
descriptionText :: Text
, SubredditSettings -> Text
title :: Text
, SubredditSettings -> ContentOptions
linkType :: ContentOptions
, SubredditSettings -> Integer
hideScoreMins :: Integer
, SubredditSettings -> Maybe Text
submitLinkLabel :: Maybe Text
, SubredditSettings -> Maybe Text
submitTextLabel :: Maybe Text
, SubredditSettings -> Maybe Bool
domainCSS :: Maybe Bool
, SubredditSettings -> Maybe Bool
domainSidebar :: Maybe Bool
, SubredditSettings -> Bool
showMedia :: Bool
, SubredditSettings -> Bool
over18 :: Bool
, SubredditSettings -> Text
language :: Text
, SubredditSettings -> Integer
wikiEditKarma :: Integer
, SubredditSettings -> Integer
wikiEditAge :: Integer
, SubredditSettings -> WikiEditMode
wikiEditMode :: WikiEditMode
, :: SpamFilterStrength
, SubredditSettings -> SpamFilterStrength
spamSelfposts :: SpamFilterStrength
, SubredditSettings -> SpamFilterStrength
spamLinks :: SpamFilterStrength
, SubredditSettings -> Bool
publicTrafficStats :: Bool
, SubredditSettings -> SubredditType
subredditType :: SubredditType }
deriving (Int -> SubredditSettings -> ShowS
[SubredditSettings] -> ShowS
SubredditSettings -> String
(Int -> SubredditSettings -> ShowS)
-> (SubredditSettings -> String)
-> ([SubredditSettings] -> ShowS)
-> Show SubredditSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubredditSettings] -> ShowS
$cshowList :: [SubredditSettings] -> ShowS
show :: SubredditSettings -> String
$cshow :: SubredditSettings -> String
showsPrec :: Int -> SubredditSettings -> ShowS
$cshowsPrec :: Int -> SubredditSettings -> ShowS
Show, ReadPrec [SubredditSettings]
ReadPrec SubredditSettings
Int -> ReadS SubredditSettings
ReadS [SubredditSettings]
(Int -> ReadS SubredditSettings)
-> ReadS [SubredditSettings]
-> ReadPrec SubredditSettings
-> ReadPrec [SubredditSettings]
-> Read SubredditSettings
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SubredditSettings]
$creadListPrec :: ReadPrec [SubredditSettings]
readPrec :: ReadPrec SubredditSettings
$creadPrec :: ReadPrec SubredditSettings
readList :: ReadS [SubredditSettings]
$creadList :: ReadS [SubredditSettings]
readsPrec :: Int -> ReadS SubredditSettings
$creadsPrec :: Int -> ReadS SubredditSettings
Read, SubredditSettings -> SubredditSettings -> Bool
(SubredditSettings -> SubredditSettings -> Bool)
-> (SubredditSettings -> SubredditSettings -> Bool)
-> Eq SubredditSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubredditSettings -> SubredditSettings -> Bool
$c/= :: SubredditSettings -> SubredditSettings -> Bool
== :: SubredditSettings -> SubredditSettings -> Bool
$c== :: SubredditSettings -> SubredditSettings -> Bool
Eq)
instance FromJSON SubredditSettings where
parseJSON :: Value -> Parser SubredditSettings
parseJSON (Object Object
o) = do
Object
o Object -> Text -> Parser ()
`ensureKind` Text
subredditSettingsPrefix
Object
d <- Object
o Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"data"
Text
-> Text
-> Text
-> ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings
SubredditSettings (Text
-> Text
-> Text
-> ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Text
-> Parser
(Text
-> Text
-> ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Text -> Text
unescape (Text -> Text) -> Parser Text -> Parser Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
d Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"description")
Parser
(Text
-> Text
-> ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Text
-> Parser
(Text
-> ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"public_description"
Parser
(Text
-> ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Text
-> Parser
(ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"title"
Parser
(ContentOptions
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser ContentOptions
-> Parser
(Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser ContentOptions
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"content_options"
Parser
(Integer
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Integer
-> Parser
(Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"comment_score_hide_mins"
Parser
(Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser (Maybe Text)
-> Parser
(Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"submit_link_label"
Parser
(Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser (Maybe Text)
-> Parser
(Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"submit_text_label"
Parser
(Maybe Bool
-> Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser (Maybe Bool)
-> Parser
(Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"domain_css"
Parser
(Maybe Bool
-> Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser (Maybe Bool)
-> Parser
(Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"domain_sidebar"
Parser
(Bool
-> Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Bool
-> Parser
(Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"show_media"
Parser
(Bool
-> Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Bool
-> Parser
(Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"over_18"
Parser
(Text
-> Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Text
-> Parser
(Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"language"
Parser
(Integer
-> Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Integer
-> Parser
(Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"wiki_edit_karma"
Parser
(Integer
-> WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser Integer
-> Parser
(WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"wiki_edit_age"
Parser
(WikiEditMode
-> SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser WikiEditMode
-> Parser
(SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser WikiEditMode
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"wikimode"
Parser
(SpamFilterStrength
-> SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser SpamFilterStrength
-> Parser
(SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser SpamFilterStrength
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"spam_comments"
Parser
(SpamFilterStrength
-> SpamFilterStrength
-> Bool
-> SubredditType
-> SubredditSettings)
-> Parser SpamFilterStrength
-> Parser
(SpamFilterStrength -> Bool -> SubredditType -> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser SpamFilterStrength
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"spam_selfposts"
Parser
(SpamFilterStrength -> Bool -> SubredditType -> SubredditSettings)
-> Parser SpamFilterStrength
-> Parser (Bool -> SubredditType -> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser SpamFilterStrength
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"spam_links"
Parser (Bool -> SubredditType -> SubredditSettings)
-> Parser Bool -> Parser (SubredditType -> SubredditSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"public_traffic"
Parser (SubredditType -> SubredditSettings)
-> Parser SubredditType -> Parser SubredditSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
d Object -> Key -> Parser SubredditType
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"subreddit_type"
parseJSON Value
_ = Parser SubredditSettings
forall a. Monoid a => a
mempty
instance ToJSON SubredditSettings where
toJSON :: SubredditSettings -> Value
toJSON SubredditSettings
settings = [Pair] -> Value
object
[ Key
"description" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Text
sidebarText SubredditSettings
settings
, Key
"public_description" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Text
descriptionText SubredditSettings
settings
, Key
"title" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Text
title SubredditSettings
settings
, Key
"content_options" Key -> ContentOptions -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> ContentOptions
linkType SubredditSettings
settings
, Key
"comment_score_hide_mins" Key -> Integer -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Integer
hideScoreMins SubredditSettings
settings
, Key
"submit_link_label" Key -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Maybe Text
submitLinkLabel SubredditSettings
settings
, Key
"submit_text_label" Key -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Maybe Text
submitTextLabel SubredditSettings
settings
, Key
"domain_css" Key -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Maybe Bool
domainCSS SubredditSettings
settings
, Key
"domain_sidebar" Key -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Maybe Bool
domainSidebar SubredditSettings
settings
, Key
"show_media" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Bool
showMedia SubredditSettings
settings
, Key
"over_18" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Bool
over18 SubredditSettings
settings
, Key
"language" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Text
language SubredditSettings
settings
, Key
"wiki_edit_karma" Key -> Integer -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Integer
wikiEditKarma SubredditSettings
settings
, Key
"wiki_edit_age" Key -> Integer -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Integer
wikiEditAge SubredditSettings
settings
, Key
"wikimode" Key -> WikiEditMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> WikiEditMode
wikiEditMode SubredditSettings
settings
, Key
"spam_comments" Key -> SpamFilterStrength -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> SpamFilterStrength
spamComments SubredditSettings
settings
, Key
"spam_selfposts" Key -> SpamFilterStrength -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> SpamFilterStrength
spamSelfposts SubredditSettings
settings
, Key
"spam_links" Key -> SpamFilterStrength -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> SpamFilterStrength
spamLinks SubredditSettings
settings
, Key
"public_traffic" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> Bool
publicTrafficStats SubredditSettings
settings
, Key
"subreddit_type" Key -> SubredditType -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= SubredditSettings -> SubredditType
subredditType SubredditSettings
settings ]
data SubredditType = Public
| Private
| Restricted
| GoldRestricted
| Archived
deriving (Int -> SubredditType -> ShowS
[SubredditType] -> ShowS
SubredditType -> String
(Int -> SubredditType -> ShowS)
-> (SubredditType -> String)
-> ([SubredditType] -> ShowS)
-> Show SubredditType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubredditType] -> ShowS
$cshowList :: [SubredditType] -> ShowS
show :: SubredditType -> String
$cshow :: SubredditType -> String
showsPrec :: Int -> SubredditType -> ShowS
$cshowsPrec :: Int -> SubredditType -> ShowS
Show, ReadPrec [SubredditType]
ReadPrec SubredditType
Int -> ReadS SubredditType
ReadS [SubredditType]
(Int -> ReadS SubredditType)
-> ReadS [SubredditType]
-> ReadPrec SubredditType
-> ReadPrec [SubredditType]
-> Read SubredditType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SubredditType]
$creadListPrec :: ReadPrec [SubredditType]
readPrec :: ReadPrec SubredditType
$creadPrec :: ReadPrec SubredditType
readList :: ReadS [SubredditType]
$creadList :: ReadS [SubredditType]
readsPrec :: Int -> ReadS SubredditType
$creadsPrec :: Int -> ReadS SubredditType
Read, SubredditType -> SubredditType -> Bool
(SubredditType -> SubredditType -> Bool)
-> (SubredditType -> SubredditType -> Bool) -> Eq SubredditType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubredditType -> SubredditType -> Bool
$c/= :: SubredditType -> SubredditType -> Bool
== :: SubredditType -> SubredditType -> Bool
$c== :: SubredditType -> SubredditType -> Bool
Eq)
subredditTypeText :: SubredditType -> Text
subredditTypeText :: SubredditType -> Text
subredditTypeText SubredditType
Public = Text
"public"
subredditTypeText SubredditType
Private = Text
"private"
subredditTypeText SubredditType
Restricted = Text
"restricted"
subredditTypeText SubredditType
GoldRestricted = Text
"gold_restricted"
subredditTypeText SubredditType
Archived = Text
"archived"
instance FromJSON SubredditType where
parseJSON :: Value -> Parser SubredditType
parseJSON (String Text
s) =
case Text
s of
Text
"public" -> SubredditType -> Parser SubredditType
forall (m :: * -> *) a. Monad m => a -> m a
return SubredditType
Public
Text
"private" -> SubredditType -> Parser SubredditType
forall (m :: * -> *) a. Monad m => a -> m a
return SubredditType
Private
Text
"restricted" -> SubredditType -> Parser SubredditType
forall (m :: * -> *) a. Monad m => a -> m a
return SubredditType
Restricted
Text
"gold_restricted" -> SubredditType -> Parser SubredditType
forall (m :: * -> *) a. Monad m => a -> m a
return SubredditType
GoldRestricted
Text
"archived" -> SubredditType -> Parser SubredditType
forall (m :: * -> *) a. Monad m => a -> m a
return SubredditType
Archived
Text
_ -> Parser SubredditType
forall a. Monoid a => a
mempty
parseJSON Value
_ = Parser SubredditType
forall a. Monoid a => a
mempty
instance ToJSON SubredditType where
toJSON :: SubredditType -> Value
toJSON = Text -> Value
String (Text -> Value)
-> (SubredditType -> Text) -> SubredditType -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SubredditType -> Text
subredditTypeText
instance Default SubredditType where
def :: SubredditType
def = SubredditType
Public
instance ToQuery SubredditType where
toQuery :: Text -> SubredditType -> [(Text, Text)]
toQuery Text
k SubredditType
v = [(Text
k, SubredditType -> Text
subredditTypeText SubredditType
v)]
data ContentOptions = Any
| Link
| Self
deriving (Int -> ContentOptions -> ShowS
[ContentOptions] -> ShowS
ContentOptions -> String
(Int -> ContentOptions -> ShowS)
-> (ContentOptions -> String)
-> ([ContentOptions] -> ShowS)
-> Show ContentOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ContentOptions] -> ShowS
$cshowList :: [ContentOptions] -> ShowS
show :: ContentOptions -> String
$cshow :: ContentOptions -> String
showsPrec :: Int -> ContentOptions -> ShowS
$cshowsPrec :: Int -> ContentOptions -> ShowS
Show, ReadPrec [ContentOptions]
ReadPrec ContentOptions
Int -> ReadS ContentOptions
ReadS [ContentOptions]
(Int -> ReadS ContentOptions)
-> ReadS [ContentOptions]
-> ReadPrec ContentOptions
-> ReadPrec [ContentOptions]
-> Read ContentOptions
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ContentOptions]
$creadListPrec :: ReadPrec [ContentOptions]
readPrec :: ReadPrec ContentOptions
$creadPrec :: ReadPrec ContentOptions
readList :: ReadS [ContentOptions]
$creadList :: ReadS [ContentOptions]
readsPrec :: Int -> ReadS ContentOptions
$creadsPrec :: Int -> ReadS ContentOptions
Read, ContentOptions -> ContentOptions -> Bool
(ContentOptions -> ContentOptions -> Bool)
-> (ContentOptions -> ContentOptions -> Bool) -> Eq ContentOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ContentOptions -> ContentOptions -> Bool
$c/= :: ContentOptions -> ContentOptions -> Bool
== :: ContentOptions -> ContentOptions -> Bool
$c== :: ContentOptions -> ContentOptions -> Bool
Eq)
contentOptionsText :: ContentOptions -> Text
contentOptionsText :: ContentOptions -> Text
contentOptionsText ContentOptions
Any = Text
"any"
contentOptionsText ContentOptions
Link = Text
"link"
contentOptionsText ContentOptions
Self = Text
"self"
instance FromJSON ContentOptions where
parseJSON :: Value -> Parser ContentOptions
parseJSON (String Text
s) =
case Text
s of
Text
"any" -> ContentOptions -> Parser ContentOptions
forall (m :: * -> *) a. Monad m => a -> m a
return ContentOptions
Any
Text
"link" -> ContentOptions -> Parser ContentOptions
forall (m :: * -> *) a. Monad m => a -> m a
return ContentOptions
Link
Text
"self" -> ContentOptions -> Parser ContentOptions
forall (m :: * -> *) a. Monad m => a -> m a
return ContentOptions
Self
Text
_ -> Parser ContentOptions
forall a. Monoid a => a
mempty
parseJSON Value
_ = Parser ContentOptions
forall a. Monoid a => a
mempty
instance ToJSON ContentOptions where
toJSON :: ContentOptions -> Value
toJSON = Text -> Value
String (Text -> Value)
-> (ContentOptions -> Text) -> ContentOptions -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContentOptions -> Text
contentOptionsText
instance ToQuery ContentOptions where
toQuery :: Text -> ContentOptions -> [(Text, Text)]
toQuery Text
k ContentOptions
v = [(Text
k, ContentOptions -> Text
contentOptionsText ContentOptions
v)]
instance Default ContentOptions where
def :: ContentOptions
def = ContentOptions
Any
data SpamFilterStrength = FilterLow
| FilterHigh
| FilterAll
deriving (Int -> SpamFilterStrength -> ShowS
[SpamFilterStrength] -> ShowS
SpamFilterStrength -> String
(Int -> SpamFilterStrength -> ShowS)
-> (SpamFilterStrength -> String)
-> ([SpamFilterStrength] -> ShowS)
-> Show SpamFilterStrength
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SpamFilterStrength] -> ShowS
$cshowList :: [SpamFilterStrength] -> ShowS
show :: SpamFilterStrength -> String
$cshow :: SpamFilterStrength -> String
showsPrec :: Int -> SpamFilterStrength -> ShowS
$cshowsPrec :: Int -> SpamFilterStrength -> ShowS
Show, ReadPrec [SpamFilterStrength]
ReadPrec SpamFilterStrength
Int -> ReadS SpamFilterStrength
ReadS [SpamFilterStrength]
(Int -> ReadS SpamFilterStrength)
-> ReadS [SpamFilterStrength]
-> ReadPrec SpamFilterStrength
-> ReadPrec [SpamFilterStrength]
-> Read SpamFilterStrength
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SpamFilterStrength]
$creadListPrec :: ReadPrec [SpamFilterStrength]
readPrec :: ReadPrec SpamFilterStrength
$creadPrec :: ReadPrec SpamFilterStrength
readList :: ReadS [SpamFilterStrength]
$creadList :: ReadS [SpamFilterStrength]
readsPrec :: Int -> ReadS SpamFilterStrength
$creadsPrec :: Int -> ReadS SpamFilterStrength
Read, SpamFilterStrength -> SpamFilterStrength -> Bool
(SpamFilterStrength -> SpamFilterStrength -> Bool)
-> (SpamFilterStrength -> SpamFilterStrength -> Bool)
-> Eq SpamFilterStrength
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SpamFilterStrength -> SpamFilterStrength -> Bool
$c/= :: SpamFilterStrength -> SpamFilterStrength -> Bool
== :: SpamFilterStrength -> SpamFilterStrength -> Bool
$c== :: SpamFilterStrength -> SpamFilterStrength -> Bool
Eq)
instance FromJSON SpamFilterStrength where
parseJSON :: Value -> Parser SpamFilterStrength
parseJSON (String Text
s) =
case Text
s of
Text
"low" -> SpamFilterStrength -> Parser SpamFilterStrength
forall (m :: * -> *) a. Monad m => a -> m a
return SpamFilterStrength
FilterLow
Text
"high" -> SpamFilterStrength -> Parser SpamFilterStrength
forall (m :: * -> *) a. Monad m => a -> m a
return SpamFilterStrength
FilterHigh
Text
"all" -> SpamFilterStrength -> Parser SpamFilterStrength
forall (m :: * -> *) a. Monad m => a -> m a
return SpamFilterStrength
FilterAll
Text
_ -> Parser SpamFilterStrength
forall a. Monoid a => a
mempty
parseJSON Value
_ = Parser SpamFilterStrength
forall a. Monoid a => a
mempty
spamFilterStrengthText :: SpamFilterStrength -> Text
spamFilterStrengthText :: SpamFilterStrength -> Text
spamFilterStrengthText SpamFilterStrength
FilterLow = Text
"low"
spamFilterStrengthText SpamFilterStrength
FilterHigh = Text
"high"
spamFilterStrengthText SpamFilterStrength
FilterAll = Text
"all"
instance ToJSON SpamFilterStrength where
toJSON :: SpamFilterStrength -> Value
toJSON = Text -> Value
String (Text -> Value)
-> (SpamFilterStrength -> Text) -> SpamFilterStrength -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SpamFilterStrength -> Text
spamFilterStrengthText
instance ToQuery SpamFilterStrength where
toQuery :: Text -> SpamFilterStrength -> [(Text, Text)]
toQuery Text
k SpamFilterStrength
v = [(Text
k, SpamFilterStrength -> Text
spamFilterStrengthText SpamFilterStrength
v)]
data WikiEditMode = Anyone
| ApprovedOnly
| ModOnly
deriving (Int -> WikiEditMode -> ShowS
[WikiEditMode] -> ShowS
WikiEditMode -> String
(Int -> WikiEditMode -> ShowS)
-> (WikiEditMode -> String)
-> ([WikiEditMode] -> ShowS)
-> Show WikiEditMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WikiEditMode] -> ShowS
$cshowList :: [WikiEditMode] -> ShowS
show :: WikiEditMode -> String
$cshow :: WikiEditMode -> String
showsPrec :: Int -> WikiEditMode -> ShowS
$cshowsPrec :: Int -> WikiEditMode -> ShowS
Show, ReadPrec [WikiEditMode]
ReadPrec WikiEditMode
Int -> ReadS WikiEditMode
ReadS [WikiEditMode]
(Int -> ReadS WikiEditMode)
-> ReadS [WikiEditMode]
-> ReadPrec WikiEditMode
-> ReadPrec [WikiEditMode]
-> Read WikiEditMode
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [WikiEditMode]
$creadListPrec :: ReadPrec [WikiEditMode]
readPrec :: ReadPrec WikiEditMode
$creadPrec :: ReadPrec WikiEditMode
readList :: ReadS [WikiEditMode]
$creadList :: ReadS [WikiEditMode]
readsPrec :: Int -> ReadS WikiEditMode
$creadsPrec :: Int -> ReadS WikiEditMode
Read, WikiEditMode -> WikiEditMode -> Bool
(WikiEditMode -> WikiEditMode -> Bool)
-> (WikiEditMode -> WikiEditMode -> Bool) -> Eq WikiEditMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WikiEditMode -> WikiEditMode -> Bool
$c/= :: WikiEditMode -> WikiEditMode -> Bool
== :: WikiEditMode -> WikiEditMode -> Bool
$c== :: WikiEditMode -> WikiEditMode -> Bool
Eq)
instance FromJSON WikiEditMode where
parseJSON :: Value -> Parser WikiEditMode
parseJSON (String Text
s) =
case Text
s of
Text
"disabled" -> WikiEditMode -> Parser WikiEditMode
forall (m :: * -> *) a. Monad m => a -> m a
return WikiEditMode
ModOnly
Text
"modonly" -> WikiEditMode -> Parser WikiEditMode
forall (m :: * -> *) a. Monad m => a -> m a
return WikiEditMode
ApprovedOnly
Text
"anyone" -> WikiEditMode -> Parser WikiEditMode
forall (m :: * -> *) a. Monad m => a -> m a
return WikiEditMode
Anyone
Text
_ -> Parser WikiEditMode
forall a. Monoid a => a
mempty
parseJSON Value
_ = Parser WikiEditMode
forall a. Monoid a => a
mempty
wikiEditModeText :: WikiEditMode -> Text
wikiEditModeText :: WikiEditMode -> Text
wikiEditModeText WikiEditMode
ModOnly = Text
"disabled"
wikiEditModeText WikiEditMode
Anyone = Text
"anyone"
wikiEditModeText WikiEditMode
ApprovedOnly = Text
"modonly"
instance ToJSON WikiEditMode where
toJSON :: WikiEditMode -> Value
toJSON = Text -> Value
String (Text -> Value) -> (WikiEditMode -> Text) -> WikiEditMode -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. WikiEditMode -> Text
wikiEditModeText
instance ToQuery WikiEditMode where
toQuery :: Text -> WikiEditMode -> [(Text, Text)]
toQuery Text
k WikiEditMode
v = [(Text
k, WikiEditMode -> Text
wikiEditModeText WikiEditMode
v)]
instance Default WikiEditMode where
def :: WikiEditMode
def = WikiEditMode
Anyone
subredditSettingsPrefix :: Text
subredditSettingsPrefix :: Text
subredditSettingsPrefix = Text
"subreddit_settings"