reddit-0.1.0.0: src/Reddit/Types/Wiki.hs
module Reddit.Types.Wiki where
import Reddit.Parser
import Reddit.Types.User
import Reddit.Utilities
import Control.Applicative
import Data.Aeson
import Data.Monoid
import Data.Text (Text)
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Prelude
newtype RevisionID = RevisionID Text
deriving (Show, Read, Eq)
data WikiPage = WikiPage { contentHTML :: Maybe Text
, contentMarkdown :: Text
, revisionDate :: UTCTime
, revisedBy :: Username
, canRevise :: Bool }
deriving (Show, Read, Eq)
instance FromJSON WikiPage where
parseJSON (Object o) = do
o `ensureKind` "wikipage"
d <- o .: "data"
WikiPage <$> (fmap unescape <$> d .:? "content_html")
<*> (unescape <$> d .: "content_md")
<*> (posixSecondsToUTCTime . fromInteger <$> d .: "revision_date")
<*> ((d .: "revision_by") >>= (.: "data") >>= (.: "name"))
<*> d .: "may_revise"
parseJSON _ = mempty