{-# LANGUAGE OverloadedStrings, TemplateHaskell #-} module Web.Slack.Types.Team where import Data.Text (Text) import Web.Slack.Types.Id import Web.Slack.Types.TeamPreferences import Web.Slack.Types.Base import Control.Lens.TH import Data.Aeson import Control.Applicative data Team = Team { _teamId :: TeamId , _teamName :: Text , _teamEmailDomain :: Text , _teamDomain :: Text , _teamPreferences :: TeamPreferences , _teamIcons :: TeamIcons , _teamOverStorageLimit :: Bool } deriving Show data TeamIcons = TeamIcons { _teamIcon34 :: URL , _teamIcon44 :: URL , _teamIcon68 :: URL , _teamIcon88 :: URL , _teamIcon102 :: URL , _teamIcon132 :: URL , _teamIconDefault :: Bool } deriving Show makeLenses ''Team makeLenses ''TeamIcons instance FromJSON Team where parseJSON = withObject "team" (\o -> Team <$> o .: "id" <*> o .: "name" <*> o .: "email_domain" <*> o .: "domain" <*> o .: "prefs" <*> o .: "icon" <*> o .: "over_storage_limit") instance FromJSON TeamIcons where parseJSON = withObject "teamIcons" (\o -> TeamIcons <$> o .: "image_34" <*> o .: "image_44" <*> o .: "image_68" <*> o .: "image_88" <*> o .: "image_102" <*> o .: "image_132" <*> o .: "image_default")