module Koofr.Mount where import Data.Aeson.TH import Koofr.Internal import Data.Char type MountId = String data Mounts = Mounts { mountsMounts :: [Mount] } deriving (Eq, Show) data Mount = Mount { mountId :: MountId , mountName :: String , mountType :: String , mountOnline :: Bool , mountOwner :: MountUser , mountUsers :: [MountUser] , mountGroups :: [MountUser] , mountIsShared :: Bool , mountPermissions :: Permissions , mountSpaceTotal :: Integer , mountSpaceUsed :: Integer , mountVersion :: Integer , mountIsPrimary :: Bool , mountCanWrite :: Bool , mountCanUpload :: Bool , mountOverQuota :: Bool } deriving (Eq, Show) data MountUser = MountUser { mountUserId :: String , mountUserName :: String , mountUserEmail :: Maybe String , mountUserPermissions :: Permissions , mountUserIsGroup :: Maybe Bool } deriving (Eq, Show) data Permissions = Permissions { permissionRead :: Bool , permissionOwner :: Bool , permissionMount :: Bool , permissionCreate_Receiver :: Bool , permissionComment :: Bool , permissionWrite :: Bool , permissionCreate_Link :: Bool } deriving (Eq, Show) deriveJSON defaultOptions{fieldLabelModifier = (map toUpper . drop 10)} ''Permissions deriveJSON defaultOptions{fieldLabelModifier = (lowerCamel . drop 9)} ''MountUser deriveJSON defaultOptions{fieldLabelModifier = (lowerCamel . drop 5)} ''Mount deriveJSON defaultOptions{fieldLabelModifier = (lowerCamel . drop 6)} ''Mounts