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)
data FolderInfo = FolderInfo {
getLastFile :: LastFile
} deriving (Eq, Show)
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