module Reddit.Routes.User where

import Reddit.Types.Comment (CommentID)
import Reddit.Types.Options
import Reddit.Types.Post
import Reddit.Types.Subreddit
import Reddit.Types.User

import Data.Text (Text)
import Network.API.Builder.Routes

aboutUser :: Username -> Route
aboutUser (Username user) = Route [ "user", user, "about.json" ]
                                  []
                                  "GET"

aboutMe :: Route
aboutMe = Route [ "api", "me.json" ]
                []
                "GET"

userComments :: Options CommentID -> Username -> Route
userComments opts (Username user) =
  Route [ "user", user, "comments" ]
        [ "limit" =. limit opts
        , "before" =. before opts
        , "after" =. after opts ]
        "GET"

userPosts :: Options PostID -> Username -> Route
userPosts opts (Username user) = 
  Route [ "user", user, "submitted" ]
        [ "limit" =. limit opts 
        , "before" =. before opts
        , "after" =. after opts ]
        "GET"


usernameAvailable :: Username -> Route
usernameAvailable user = Route [ "api", "username_available.json" ]
                               [ "user" =. user]
                               "GET"

blocked :: Route
blocked = Route [ "prefs", "blocked" ]
                [ ]
                "GET"

friends :: Route
friends = Route [ "prefs", "friends" ]
                [ ]
                "GET"

lookupUserFlair :: SubredditName -> Username -> Route
lookupUserFlair (R r) u =
  Route [ "r", r, "api", "flairlist" ]
        [ "name" =. u ]
        "GET"

setUserFlair :: SubredditName -> Username -> Text -> Text -> Route
setUserFlair (R r) u txt cls =
  Route [ "r", r, "api", "flair" ]
        [ "name" =. u
        , "text" =. txt
        , "css_class" =. cls ]
        "POST"