module Reddit.Routes.Flair where

import Reddit.Types.Options
import Reddit.Types.Subreddit
import Reddit.Types.User

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

flairList :: Options UserID -> SubredditName -> Route
flairList opts (R r) =
  Route [ "r", r, "api", "flairlist" ]
        [ "after" =. after opts
        , "before" =. before opts
        , "limit" =. limit opts ]
        "GET"

addLinkFlairTemplate :: SubredditName -> Text -> Text -> Bool -> Route
addLinkFlairTemplate (R sub) css label editable =
  Route [ "r", sub, "api", "flairtemplate" ]
        [ "css_class" =. css
        , "flair_type" =. ("LINK_FLAIR" :: Text)
        , "text" =. label
        , "text_editable" =. editable ]
        "POST"

flairCSVRoute :: SubredditName -> [(Username, Text, Text)] -> Route
flairCSVRoute (R sub) sets =
  Route [ "r", sub, "api", "flaircsv" ]
        [ "flair_csv" =. Text.unlines (map f sets) ]
        "POST"
  where
    f (Username u, t, c) =
      Text.intercalate "," $ map (Text.pack . show) [u,t,c]