module Reddit.Routes.Vote where

import Reddit.Types.Thing

import Network.API.Builder.Query
import Network.API.Builder.Routes

data VoteDirection = UpVote
                   | RemoveVote
                   | DownVote
  deriving (Show, Read, Eq)

instance ToQuery VoteDirection where
  toQuery k UpVote = [(k, "1")]
  toQuery k RemoveVote = [(k, "0")]
  toQuery k DownVote = [(k, "-1")]

vote :: Thing a => VoteDirection -> a -> Route
vote direction tID = Route [ "api", "vote" ]
                           [ "id" =. Just (fullName tID)
                           , "dir" =. direction ]
                           "POST"