module Reddit.Types.Flair where import Reddit.Types.Listing import Reddit.Types.User import Control.Applicative import Data.Aeson import Data.Monoid import Data.Text (Text) import Prelude data Flair = Flair { user :: Username , text :: Maybe Text , cssClass :: Maybe Text } deriving (Show, Read, Eq) instance FromJSON Flair where parseJSON (Object o) = Flair <$> o .: "user" <*> o .:? "flair_text" <*> o .:? "flair_css_class" parseJSON _ = mempty data FList = FList [Flair] (Maybe UserID) (Maybe UserID) deriving (Show, Read, Eq) instance FromJSON FList where parseJSON (Object o) = FList <$> o .: "users" <*> o .:? "next" <*> o .:? "prev" parseJSON _ = mempty type FlairListing = Listing UserID Flair flistToListing :: FList -> FlairListing flistToListing (FList f b a) = Listing b a f