reddit-0.1.0.0: src/Reddit/Routes/Post.hs
module Reddit.Routes.Post where
import Reddit.Types.Options
import Reddit.Types.Comment (CommentID(..))
import Reddit.Types.Post (PostID(..))
import Reddit.Types.Subreddit (SubredditName(..))
import Reddit.Types.Thing
import Data.Text (Text)
import Network.API.Builder.Query
import Network.API.Builder.Routes
postsListing :: Options PostID -> Maybe SubredditName -> Text -> Route
postsListing opts r t =
Route (endpoint r)
[ "before" =. before opts
, "after" =. after opts
, "limit" =. limit opts ]
"GET"
where endpoint Nothing = [ t ]
endpoint (Just (R name)) = [ "r", name, t ]
aboutPosts :: [PostID] -> Route
aboutPosts ps =
Route [ "api", "info" ]
[ "id" =. ps ]
"GET"
savePost :: PostID -> Route
savePost p = Route [ "api", "save" ]
[ "id" =. p ]
"POST"
unsavePost :: PostID -> Route
unsavePost p = Route [ "api", "unsave" ]
[ "id" =. p ]
"POST"
submitLink :: SubredditName -> Text -> Text -> Route
submitLink (R name) title url =
Route [ "api", "submit" ]
[ "extension" =. ("json" :: Text)
, "kind" =. ("link" :: Text)
, "save" =. True
, "resubmit" =. False
, "sendreplies" =. True
, "then" =. ("tb" :: Text)
, "title" =. title
, "url" =. url
, "sr" =. name]
"POST"
submitSelfPost :: SubredditName -> Text -> Text -> Route
submitSelfPost (R name) title text =
Route [ "api", "submit" ]
[ "extension" =. ("json" :: Text)
, "kind" =. ("self" :: Text)
, "save" =. True
, "resubmit" =. False
, "sendreplies" =. True
, "then" =. ("tb" :: Text)
, "title" =. title
, "text" =. text
, "sr" =. name]
"POST"
getComments :: PostID -> Maybe CommentID -> Route
getComments (PostID p) c = Route [ "comments", p ]
[ "comment" =. fmap f c ]
"GET"
where f (CommentID x) = x
sendReplies :: Bool -> PostID -> Route
sendReplies setting p = Route [ "api", "sendreplies" ]
[ "id" =. p
, "state" =. setting ]
"POST"
removePost :: (ToQuery a, Thing a) => Bool -> a -> Route
removePost isSpam p = Route [ "api", "remove" ]
[ "id" =. p
, "spam" =. isSpam ]
"POST"
stickyPost :: Bool -> PostID -> Maybe Integer -> Route
stickyPost on p n =
Route [ "api", "set_subreddit_sticky" ]
[ "id" =. p
, "state" =. on
, "num" =. n ]
"POST"
setContestMode :: Bool -> PostID -> Route
setContestMode on p = Route [ "api", "set_contest_mode" ]
[ "id" =. p
, "state" =. on ]
"POST"
postFlair :: SubredditName -> PostID -> Text -> Text -> Route
postFlair (R sub) p text css =
Route [ "r", sub, "api", "flair" ]
[ "link" =. fullName p
, "text" =. text
, "css_class" =. css ]
"POST"