hMollom-0.2: src/Network/Mollom/Internals.hs
-- |Internal data structures and functions to the Mollom service
module Network.Mollom.Internals
( mollomApiVersion
, mollomTimeFormat
, MollomConfiguration(..)
, MollomError(..)
, MollomValue(..)
, MollomServerList(..)
) where
import Control.Monad.Error
import Network.XmlRpc.Client
import Network.XmlRpc.Internals
mollomApiVersion :: String
mollomApiVersion = "1.0"
-- FIXME: This should be specified in some configuration file
-- or use the system locale
mollomTimeFormat = "%Y-%m-%dT%H:%M:%S.000+0200"
data MollomConfiguration = MollomConfiguration
{ mcPublicKey :: String
, mcPrivateKey :: String
, mcAPIVersion :: String
} deriving (Eq, Ord, Show)
data MollomServerList = UninitialisedServerList | MollomServerList [String] deriving (Eq, Ord, Show)
data MollomError = MollomInternalError
| MollomRefresh
| MollomServerBusy
| MollomNoMoreServers
| HMollomError String deriving (Eq, Ord, Show)
instance Error MollomError where
noMsg = HMollomError "Unknown Error"
strMsg str = HMollomError str
data MollomValue = MInt Int
| MBool Bool
| MDouble Double
| MString String deriving (Eq, Ord, Show)
instance XmlRpcType MollomValue where
toValue (MInt i) = toValue i
toValue (MBool b) = toValue b
toValue (MDouble d) = toValue d
toValue (MString s) = toValue s
fromValue (ValueInt i) = maybeToM "" (Just (MInt i))
fromValue (ValueBool b) = maybeToM "" (Just (MBool b))
fromValue (ValueDouble d) = maybeToM "" (Just (MDouble d))
fromValue (ValueString s) = maybeToM "" (Just (MString s))
getType (MInt _) = TInt
getType (MBool _) = TBool
getType (MDouble _) = TDouble
getType (MString _) = TString