module Network.Syncthing.Types.UsageReport
( UsageReport(..)
) where
import Control.Applicative ((<$>), (<*>))
import Control.Monad (MonadPlus (mzero))
import Data.Aeson (FromJSON, Value (..), parseJSON, (.:))
import Data.Text (Text)
data UsageReport = UsageReport {
getFolderMaxFiles :: Integer
, getFolderMaxMiB :: Integer
, getLongVersionR :: Text
, getMemorySize :: Integer
, getMemoryUsageMiB :: Integer
, getNumDevices :: Int
, getNumFolders :: Int
, getPlatform :: Text
, getSHA256Perf :: Double
, getTotFiles :: Integer
, getTotMiB :: Integer
, getUniqueId :: Text
, getVersionR :: Text
} deriving (Eq, Show)
instance FromJSON UsageReport where
parseJSON (Object v) =
UsageReport <$> (v .: "folderMaxFiles")
<*> (v .: "folderMaxMiB")
<*> (v .: "longVersion")
<*> (v .: "memorySize")
<*> (v .: "memoryUsageMiB")
<*> (v .: "numDevices")
<*> (v .: "numFolders")
<*> (v .: "platform")
<*> (v .: "sha256Perf")
<*> (v .: "totFiles")
<*> (v .: "totMiB")
<*> (v .: "uniqueID")
<*> (v .: "version")
parseJSON _ = mzero