{-# LANGUAGE OverloadedStrings #-} module Network.Syncthing.Types.FolderInfo ( FolderInfo(..) , LastFile(..) ) where import Control.Applicative ((<$>), (<*>)) import Control.Monad (MonadPlus (mzero)) import Data.Aeson (FromJSON, Value (..), parseJSON, (.:)) import Data.Text (Text) import Data.Time.Clock (UTCTime) import Network.Syncthing.Internal.Utils (toUTC) -- | Contains general statistics about folders. data FolderInfo = FolderInfo { getLastFile :: LastFile } deriving (Eq, Show) -- | Information about the last synced file. data LastFile = LastFile { getFileName :: Text , getSyncedAt :: Maybe UTCTime } deriving (Eq, Show) instance FromJSON FolderInfo where parseJSON (Object v) = FolderInfo <$> (v .: "lastFile") parseJSON _ = mzero instance FromJSON LastFile where parseJSON (Object v) = LastFile <$> (v .: "filename") <*> (toUTC <$> (v .: "at")) parseJSON _ = mzero