{-# LANGUAGE OverloadedStrings #-} 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) -- | Information about the data sent in the anonymous usage report. 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