-------------------------------------------------------------------- -- | -- Module : MediaWiki.API.Query.SiteInfo -- Description : Representing 'siteinfo' requests. -- Copyright : (c) Sigbjorn Finne, 2008 -- License : BSD3 -- -- Maintainer: Sigbjorn Finne -- Stability : provisional -- Portability: portable -- -- Representing 'siteinfo' requests. -- -------------------------------------------------------------------- module MediaWiki.API.Query.SiteInfo where import MediaWiki.API.Types import MediaWiki.API.Utils data SiteInfoRequest = SiteInfoRequest { siProp :: [String] -- general,namespaces,namespacealiases, -- specialpagealiases,statistics,interwikimap, -- dbrepllag,usergroups , siFilterIW :: Maybe Bool , siShowAllDBs :: Bool } instance APIRequest SiteInfoRequest where queryKind _ = QMeta "siteinfo" showReq r = [ opt1 "siprop" (siProp r) , mbOpt "sifilteriw" ( \x -> if x then "local" else "!local") (siFilterIW r) , optB "sishowalldb" (siShowAllDBs r) ] emptySiteInfoRequest :: SiteInfoRequest emptySiteInfoRequest = SiteInfoRequest { siProp = [] , siFilterIW = Nothing , siShowAllDBs = False } data SiteInfoResponse = SiteInfoResponse { siDBReplInfo :: [DBInfo] , siNamespaces :: [NamespaceInfo] , siGeneral :: Maybe SiteInfo , siNamespaceAliases :: [NamespaceInfo] , siSpecialPageAliases :: [(String,[String])] , siStatistics :: Maybe SiteStatistics , siInterwiki :: [InterwikiEntry] , siUserGroups :: [UserGroup] } emptySiteInfoResponse :: SiteInfoResponse emptySiteInfoResponse = SiteInfoResponse { siDBReplInfo = [] , siNamespaces = [] , siGeneral = Nothing , siNamespaceAliases = [] , siSpecialPageAliases = [] , siStatistics = Nothing , siInterwiki = [] , siUserGroups = [] } type Permission = String data UserGroup = UserGroup { ugName :: String , ugRights :: [Permission] } data SiteInfo = SiteInfo { siteMainPage :: PageName , siteBase :: URLString , siteName :: String , siteGenerator :: String , siteLastRevision :: Maybe String , siteCase :: Maybe String , siteRightsCode :: Maybe String , siteRights :: Maybe String , siteLang :: Maybe String , siteFallbackEncoding :: Maybe String , siteWriteAPI :: Bool , siteTimezone :: Maybe String , siteTZOffset :: Maybe Int } data SiteStatistics = SiteStatistics { siPages :: Integer , siArticles :: Integer , siViews :: Integer , siEdits :: Integer , siImages :: Integer , siUsers :: Integer , siAdmins :: Integer , siJobs :: Integer } data DBInfo = DBInfo { dbHost :: String , dbLag :: String }