reddit-0.1.0.0: src/Reddit/Types/Moderation.hs
module Reddit.Types.Moderation where
import Reddit.Parser
import Reddit.Types.User
import Reddit.Types.Thing
import Control.Applicative
import Data.Aeson
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Data.Monoid
import Data.Text (Text)
import Network.API.Builder.Query
import Prelude
newtype BanID = BanID Text
deriving (Show, Read, Eq, Ord)
instance FromJSON BanID where
parseJSON (String s) =
BanID <$> stripPrefix banPrefix s
parseJSON _ = mempty
instance ToQuery BanID where
toQuery k v = [(k, fullName v)]
instance Thing BanID where
fullName (BanID b) = mconcat [banPrefix, "_", b]
data Ban = Ban { username :: Username
, userID :: UserID
, note :: Text
, since :: UTCTime }
deriving (Show, Read, Eq)
instance FromJSON Ban where
parseJSON (Object o) =
Ban <$> o .: "name"
<*> o .: "id"
<*> o .: "note"
<*> (posixSecondsToUTCTime . fromInteger <$> o .: "date")
parseJSON _ = mempty
banPrefix :: Text
banPrefix = "rb"