sproxy2-1.96.0: src/Sproxy/Server/DB/DataFile.hs
{-# LANGUAGE OverloadedStrings #-}
module Sproxy.Server.DB.DataFile
( DataFile(..)
, GroupMember(..)
, GroupPrivilege(..)
, PrivilegeRule(..)
) where
import Control.Applicative (empty)
import Data.Aeson (FromJSON, parseJSON)
import Data.Text (Text)
import Data.Yaml (Value(Object), (.:))
data DataFile = DataFile
{ groupMember :: [GroupMember]
, groupPrivilege :: [GroupPrivilege]
, privilegeRule :: [PrivilegeRule]
} deriving (Show)
instance FromJSON DataFile where
parseJSON (Object m) =
DataFile <$> m .: "group_member" <*> m .: "group_privilege" <*>
m .: "privilege_rule"
parseJSON _ = empty
data GroupMember = GroupMember
{ gmGroup :: Text
, gmEmail :: Text
} deriving (Show)
instance FromJSON GroupMember where
parseJSON (Object m) = GroupMember <$> m .: "group" <*> m .: "email"
parseJSON _ = empty
data GroupPrivilege = GroupPrivilege
{ gpGroup :: Text
, gpDomain :: Text
, gpPrivilege :: Text
} deriving (Show)
instance FromJSON GroupPrivilege where
parseJSON (Object m) =
GroupPrivilege <$> m .: "group" <*> m .: "domain" <*> m .: "privilege"
parseJSON _ = empty
data PrivilegeRule = PrivilegeRule
{ prDomain :: Text
, prPrivilege :: Text
, prPath :: Text
, prMethod :: Text
} deriving (Show)
instance FromJSON PrivilegeRule where
parseJSON (Object m) =
PrivilegeRule <$> m .: "domain" <*> m .: "privilege" <*> m .: "path" <*>
m .: "method"
parseJSON _ = empty